破冰套哪些绝版了:请高手帮小弟解决一个c语言的编程题,谢谢

来源:百度文库 编辑:高考问答 时间:2024/05/14 16:38:44
题目是:在一次比赛中,共有A,B,C,D,E五个人
A说:B得第二,A的第三。
B说:B得第二,E得第四。
C说: C得第一,D得第二.
D说: C得第五,D得第三.
E说: A得第一,E得第四.
每个人说的话中只有一个是人的名次是正确的.
求出它们的正确名次.

a[0]-a[4]记录A-E的名次,默认只有一种解,如果多解可将输出函数放到判断中,而且不用break。
void main(){
int a[5],i=0,j;
a[0]=0;
while(i>=0){
f = true;
while (f && ++a[i]<5){
f = false;
for(j=0;j<=i;j++) if (a[i]==a[j]){
f = true;
break;
}
}
if (i==4){
if ((a[1]==2&&a[0]==3)+(a[1]==2&&a[4]==4)+
(a[2]==1&&a[3]==2)+(a[2]==5&&a[3]==3)+
(a[0]==1&&a[4]==4)==1) break else i--;
}
else if (a[i]<5) a[++i]=0 else i--;
}
cout<<'A'<<a[0]<<'B'<<a[1]<<'C'<<a[2]<<'D'<<a[3]<<'E'<<a[4];
}

太EASY了