|
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请
编程确定比赛的名次。
?
代码实现:
#include
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
|