一道六嫌疑犯的逻辑判断题

转帖|其它|编辑:郝浩|2008-09-25 09:51:08.000|阅读 1006 次

概述:一道六嫌疑犯的逻辑判断题

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

/**
 * 某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:
 * A、B至少有一人作案;
 * A、E、F三人中至少有两人参与作案;
 * A、D不可能是同案犯;
 * B、C或同时作案,或与本案无关; C、D中有且仅有一人作案;
 * 如果D没有参与作案,则E也不可能参与作案。
 * 试编一程序,将作案人找出来。
 *
 * @author 赵学庆,Java世纪网(java2000.net)
 *
 */
public class T {
  public static void main(String[] args) {
    // TODO Auto-generated method stub
    String[] persons = { "A", "B", "C", "D", "E", "F" };
    for (int i = 0; i <= 63; i++) {
      int t = i;
      int num[] = new int[6];
      int j = 5;
      for (; j >= 0; j--) {// 换成二进制数码,保存在一个6个元素的一维数组中
        if (t / 2 > 0) {
          num[j] = t % 2;
          t = t / 2;
        } else {
          num[j] = t;
          break;
        }
      }
      // num[0]--num[5]代表A--F


      // 代表AB至少有一个人作案
      if (num[0] + num[1] >= 1) {
        // AEF 至少2个人作案
        if (num[0] + num[4] + num[5] >= 2) {
          // AD 不是同案犯。但可能都没作案或其中一个作案
          if (num[0] + num[3] <= 1) {
            // BC 同时作案,或者同时没作案
            if ((num[1] + num[2] == 0 || num[1] + num[2] == 2)) {
              // CD肯定有一个人作案了
              if (num[2] + num[3] == 1) {
                // 如果D没作案且E也没作案,或者 D作案了了
                if (num[3] == 0 && num[4] == 0 || num[3] == 1)
                  for (int index = 0; index < num.length; index++) {
                    if (num[index] == 1) {
                      System.out.print(persons[index]);
                    }
                  }
              }
            }
          }
        }
      }
    }
  }
}

运行结果

ABCF


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:DIY部落

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP