5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
答题
( 注:编程题请贴代码+运行截图!)
int main()
{
int a=0, b=0, c=0, d=0, e=0;
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++)
{
if((b == 2) && (e == 4) && (a == 1 || a == 3) && (c == 1 || c == 5) && (d == 3 || c == 2))
if((a * b * c * d * e == 120)&&(a+b+c+d+e==15))
printf("a=%d,b=%d,c=%d,d=%d,e=%d", a, b, c, d, e);
}
}
}
}
}
return 0;
}
``
解析
- 通过计算统计可得b=2,d=4
如图所示
2.一共5个人,每一个人都有5种可能性,所以对5个人进行遍历得出所有的可能性
3.通过上图可得
a=3或a=1,b=2,c=1或c=5,d=3或d=2,e=4,
由此可进行判断,符合所有条件即可,
但是光这些还不能完全满足条件。
4.因为我们知道a、b、c、d、e是1到5,
还可得条件a+b+c+d+e=15,abcde=120
5.当a、b、c、d、e满足以上的全部条件即可求出a、b、c、d、e