5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。
编码: 0 1
A: b1 a3
B: b2 e4
C: c1 d2
D: c5 d3
E: e4 a1
00000~11111可以匹配出所有的结果然后判断即可;
#include<stdio.h>
int main(){
int i=0;
for(i=0;i<32;i++)
{
int a=1,b=1,c=1,d=1,e=1;
if(((i>>0)&1)==1)
a=1;
if(((i>>0)&1)==0)
e=4;
if(((i>>1)&1)==1)
d=3;
if(((i>>1)&1)==0)
c=5;
if(((i>>2)&1)==1)
d=2;
if(((i>>2)&1)==0)
c=1;
if(((i>>3)&1)==1)
e=4;
if(((i>>3)&1)==0)
b=2;
if(((i>>4)&1)==1)
a=3;
if(((i>>4)&1)==0)
b=1;
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);
break;
}
}
return 0:
}
输出,a=3 b=1 c=5 d=2 e=4;
这个结果有点问题 A选手全对:B第一,A第三,没有排名并列相同的情况,但提供了一种新的思路