问题描述:5位跳水高手参加10米高台跳水决赛,有好事者让5人据实力预测比赛结果.
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一.
决赛成绩公布之后,每位选手的预测都只说对了一半,即一对一错.请编程解出比赛的实际名次.
- #include <iostream.h>
- void main()
- {
- int cc1,cc2,cc3,cc4,cc5; //cc1到cc5代表5位选手的逻辑判断
- int A,B,C,D,E; //A,B,C,D,E分别代表5位选手的名次
- int g; //问题是否解决的BOOL值
- 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++)
- { cc1=((B==2)&&(!(A==3)))||((!(B==2))&&(A==3));
- cc2=((B==2)&&(!(E==4)))||((!(B==2))&&(E==4));
- cc3=((C==1)&&(!(D==2)))||((!(C==1))&&(D==2));
- cc4=((C==5)&&(!(D==3)))||((!(C==5))&&(D==3));
- cc5=((E==4)&&(!(A==1)))||((!(E==4))&&(A==1));
- if(((cc1+cc2+cc3+cc4+cc5)==5)&&(A!=B)&&(A!=C)&&(A!=D)&&(A!=E)&&(B!=C)&&(B!=D)&&(B!=E)&&(C!=D)&&(C!=E)&&(D!=E))
- { g=1;
- cout<<"A的名次是:"<<A<<endl;
- cout<<"B的名次是:"<<B<<endl;
- cout<<"C的名次是:"<<C<<endl;
- cout<<"D的名次是:"<<D<<endl;
- cout<<"E的名次是:"<<E<<endl;
- }}}}};
-
- if(g!=1)
- cout<<"Can't found!"<<endl;
-
- }