A选手说:B第二,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。 E选手说:我第四,A第一。 决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错。请编程给出比赛的实际名次。
#include <stdio.h>
int main(){
int a,b,c,d,e;
int s1,s2,s3,s4,s5,s6;
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++){
s1=(b==2)+(a==3);
s2=(b==2)+(e==4);
s3=(c==1)+(d==2);
s4=(c==5)+(d==3);
s5=(e==4)+(a==1);
s6=(a-b)*(a-c)*(a-d)*(a-e)*(b-c)*(b-d)*(b-e)*(c-d)*(c-e)*(d-e);//5位选手名次不相同
if(s1==1 && s2==1 && s3==1 && s4==1 && s5==1 && s6!=0){
printf("a:%d b:%d c:%d d:%d e:%d",a,b,c,d,e);
}
}
}
}
}
}
}
运行结果: