#include<stdio.h>
int main()
{
int A,B,C,D,E;
for(A = 1;A <=5; A++)
{
for(B = 1;B <=5; B++)
{
for(C = 0;C <= 5; C++)
{
for(D = 0;D <=5; D++)
{
for(E = 0;E <= 5; E++)
{
if(((B==1)+(A==3)==1)&&
((B==2)+(E==4)==1)&&
((C==1)+(D==2)==1)&&
((C==5)+(D==3)==1)&&
((E==4)+(A==1)==1))
{
int num = 0; num|=(1<<(A-1)); //判断比赛结果是否连续
num|=(1<<(B-1));
num|=(1<<(C-1));
num|=(1<<(D-1));
num|=(1<<(E-1));/*假设ABCDE分别为1 2 3 4 5,按照这种说法最终的num为11111*/
while(num)
{
if(num%2==0)//二进制中的1是连续的,不能被2整除,如果能整除,说明二进制中有0
{
break;
}
num=num/2;
}
if(num==0)
printf("A=%d B=%d C=%d D=%d E=%d\n",A,B,C,D,E);
}
}
}
}
}
}
getchar();
return 0;
}

不知到对不对 我觉得把A的第一个条件和E的第二个条件换一下就是这结果了,这题想的人真是脑仁疼