3位老师对某次数学竞赛进行了预测。他们的预测如下。
2016-04-07 10:00
169 查看
甲说:学生A得第一名,学生B得第三名。
乙说:学生C得第一名,学生D得第四名。
丙说:学生D得第二名,学生A得第三名。
竞赛结果表明,他们都说对了一半,并且无并列名次,试编程输出a,b,c,d各自得名次。
分析:这题和上一题差不多,只不过上一题只需要一个参数(小偷的编号),而这一题需要4个参数(一、二、三、四名)。
需要注意的是在判断语句中“加号”的优先级是高于“==”,所以下面的判断条件要加括号。((r1 == 1) + (r2 == 3) == 1 && (r3 == 1) + (r4 == 4) == 1 && (r4 == 2) + (r1 == 3) == 1)
另外:1、2、3、4四个数的全排列可以参考我的这篇博客:STL中计算排列组合关系的算法,来对下面得算法进行改进
输出: 4 3 1 2
乙说:学生C得第一名,学生D得第四名。
丙说:学生D得第二名,学生A得第三名。
竞赛结果表明,他们都说对了一半,并且无并列名次,试编程输出a,b,c,d各自得名次。
分析:这题和上一题差不多,只不过上一题只需要一个参数(小偷的编号),而这一题需要4个参数(一、二、三、四名)。
需要注意的是在判断语句中“加号”的优先级是高于“==”,所以下面的判断条件要加括号。((r1 == 1) + (r2 == 3) == 1 && (r3 == 1) + (r4 == 4) == 1 && (r4 == 2) + (r1 == 3) == 1)
另外:1、2、3、4四个数的全排列可以参考我的这篇博客:STL中计算排列组合关系的算法,来对下面得算法进行改进
#include <iostream> #include <vector> using namespace std; int main() { int r4; for (int r1=1;r1<=4;++r1) { for (int r2=1;r2<=4;++r2) { if (r1 == r2) { continue; } for (int r3 = 1;r3<=4;++r3) { if (r3 == r1 || r3 == r2) { continue; } r4 = 10-r1-r2-r3; if ((r1 == 1) + (r2 == 3) == 1 && (r3 == 1) + (r4 == 4) == 1 && (r4 == 2) + (r1 == 3) == 1) { cout<<r1<<'\t'<<r2<<'\t'<<r3<<'\t'<<r4<<endl; } } } } return 0; }
输出: 4 3 1 2
相关文章推荐
- 每天laravel-20160705|CahceMissed
- hdu1029 技巧
- 快速熟悉项目代码
- hdu1087 LIS变形
- Myeclipse 导入别人的项目,汉字是乱码怎么办?
- Linux下undefined reference to ‘pthread_create’问题解决
- Spring源代码解析(三):Spring JDBC
- ListView使用ViewHolder模式提高效率
- Android Studio常用插件
- 无处不在的二分查找
- 在eclipse中查看android源码
- 64位win7系统中JDK的安装及环境变量的配置
- 3.7.5 event_loop:事件循环
- C#更改groupbox边框颜色
- 子数组最大乘积
- 转:开启命令行下的社交-webqq脚本
- union与enum
- 数据库优化之表结构优化
- 每天laravel-20160704|CahceHit
- zabbix3.0 php