题目描述:
5为跳水高手参加10米高台跳水决赛,有人让5人根据实力预测比赛结果:
A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第四;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
决赛公布之后,每位选手的预测都只对了一半,编程解出比赛结果的实际名次
代码:
#include <iostream>
using namespace std;
int main()
{
char rank[6];
int a,b,c,d,e;
int as,bs,cs,ds,es;
memset(rank,0,sizeof(rank));
for(a=1;a<=5;a++)
{ for(b=1;b<=5;b++)
{
if(a==b) continue;
for(c=1;c<=5;c++)
{
if(a==c||b==c) continue;
for(d=1;d<=5;d++)
{
if(a==d||b==d||c==d) continue;
e=15-a-b-c-d;
as=(b==2)+(a==3);
bs=(b==2)+(e==4);
cs=(c==1)+(d==2);
ds=(c==5)+(d==3);
es=(e==4)+(a==1);
if(as==1&&bs==1&&cs==1&&ds==1&&es==1)
{
rank[a]='a';
rank[b]='b';
rank[c]='c';
rank[d]='d';
rank[e]='e';
for(int i=1;i<=5;i++)
{
cout<<"rank"<<i<<":选手"<<rank[i]<<endl;
}
}
}
}
}
}
return 0;
}