码迷,mamicode.com
首页 > 其他好文 > 详细

小小的遍历

时间:2015-09-25 04:06:04      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:10米跳台比赛 预测结果

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果
A选手说:B第一,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

int main()
{
 int a, b, c, d, e;
 int ret = 0;
 int flag;
 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++)
     {
      flag = 1;
      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))
      {
       ret |= (1 << (a - 1));
       ret |= (1 << (b - 1));
       ret |= (1 << (c - 1));
       ret |= (1 << (d - 1));
       ret |= (1 << (e - 1));

//用按位与实现

//例如 当 a = 3 时:

//a - 1 为2

//1:       0000 0001

//左移1 0000 0100

//或0    0000 0000

//结果   0000 0100

       while (ret)
       {
        if (ret % 2 == 0)
         flag = 0;
        ret /= 2;
       }
       if (flag)
        printf("%d %d %d %d %d\n", a, b, c, d, e);
      }
     }
    }

   }
  }
 }
 system("pause");
 return 0;
}

小小的遍历

标签:10米跳台比赛 预测结果

原文地址:http://10704527.blog.51cto.com/10694527/1697960

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!