C语言实现之运动员跳水名次问题
程序员文章站
2022-04-14 10:28:22
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。...
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
代码实现:
#include <stdio.h> int main() { int a=0,b=0,c=0,d=0,e=0; int flag=0; int ret=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((1==(b==1)+(a==3))&& (1==(b==2)+(e==4))&& (1==(c==1)+(d==2))&& (1==(c==5)+(d==3))&& (1==(e==4)+(a==1))) { flag=0; ret=0; ret|=(1<<(a-1)); ret|=(1<<(b-1)); ret|=(1<<(c-1)); ret|=(1<<(d-1)); ret|=(1<<(e-1)); while(ret) { if(ret%2==0) { flag=1; break; } ret/=2; } if(flag==0) { printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e); } } } } } } } return 0; }
结果是:a=2 b=1 c=1 d=3 e=4