欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C语言实现之运动员跳水名次问题

程序员文章站 2022-04-14 10:28:22
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果 A选手说:B第一,我第三。 B选手说:我第二,E第四。 C选手说:我第一,D第二。 D选手说:C最后,我第三。...
5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果

A选手说:B第一,我第三。

B选手说:我第二,E第四。

C选手说:我第一,D第二。

D选手说:C最后,我第三。

E选手说:我第四,A第一。

比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

 

代码实现:

#include <stdio.h>
int main()
{
 int a=0,b=0,c=0,d=0,e=0;
 int flag=0;
 int ret=0;
 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++)
     {
      if((1==(b==1)+(a==3))&&
         (1==(b==2)+(e==4))&&
         (1==(c==1)+(d==2))&&
         (1==(c==5)+(d==3))&&
         (1==(e==4)+(a==1)))
      {
       flag=0;
       ret=0;
       ret|=(1<<(a-1));
       ret|=(1<<(b-1));
       ret|=(1<<(c-1));
       ret|=(1<<(d-1));
       ret|=(1<<(e-1));
       while(ret)
       {
        if(ret%2==0)
        {
         flag=1;
         break;
        }
        ret/=2;
         
       }
       if(flag==0)
        {
         printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);
        }
      }
     }
    }
   }
  }
 }
 return 0;
}

 

结果是:a=2 b=1 c=1 d=3 e=4