5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
这是一道类似智力题的编程,用代码实现如下;
#include<stdio.h>
#include<stdlib.h>
//一共有5!种结果
void Function(){
int a = 1, b = 1, c = 1, d = 1, e = 1;
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) + (a == 3) ==1 &&(b==2) +(e==4)==1&&(c==1)+(d==2)==1&&(c==5)+(d==3)==1&&(a==1)+(e==4)==1){
if (a*b*c*d*e==120){
//合法性判定,需要五个的积为120,否则会有名次重复的现象;
printf("a=%d b=%d c=%d d=%d e=%d", a, b, c, d, e);
}
}
}
}
}
}
}
}
int main(){
Function();
system("pause");
return 0;
}
五位跳水运动员在比赛前各自预测了比赛结果,每位选手的预测都只有一半正确。通过编程解决这个谜题,找出正确的比赛名次。代码使用C语言,通过穷举法验证每位选手的预测,最终确定唯一符合条件的比赛结果。
2035

被折叠的 条评论
为什么被折叠?



