您的位置:首页 > 其它

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

2017-11-20 18:29 357 查看
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

A选手说:B第二,我第三;

B选手说:我第二,E第四;

C选手说:我第一,D第二;

D选手说:C最后,我第三;

E选手说:我第四,A第一;

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

#include<stdio.h>
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
//五层循环,代表abcde可能在的左右名次,当然有像abcde都是第一名等的错误排名方式
//下面用if语句进行筛选
for (a = 1; a <= 5; a++)
{
for (b = 1; b <= 5; b++)
{
for (c = 1; c <= 5; c++)
{
for (d = 1; d <= 5; d++)
{
for (e = 1; e <= 5; e++)
{

//abcde五个人只说对了一半,所以他们说的话一真一假,所以加起来的值为1
if (((b == 2) + (a == 3) == 1)
&& ((b == 2) + (e == 4) == 1)
&& ((c == 1) + (d == 2) == 1)
&& ((c == 5) + (d == 3) == 1)
&& ((e == 4) + (a == 1) == 1))
{
//外层if进行的第一次筛选的结果有重复,这时规定abcde五人的名次不能出现重复
//这里使用两层if语句,而不把所有条件放在一个if的条件中,可以减少内层if判断语句执行的次数,提高效率
if (((a != b) && (a != c) && (a != d) && (a != e))
&& ((b != c) && (b != d) && (b != e))
&& ((c != d) && (c != e))
&& ((d != e)))
{
printf("a: %d, b: %d, c: %d, d: %d, e: %d\n", a, b, c, d, e);
}
}
}
}
}
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐