eimhee 发表于 2013-1-27 04:45:50

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

<div class="highlighter">
[*]/**
[*] * 某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析: <br>
[*] * A、B至少有一人作案;<br>
[*] * A、E、F三人中至少有两人参与作案;<br>
[*] * A、D不可能是同案犯;<br>
[*] * B、C或同时作案,或与本案无关; C、D中有且仅有一人作案;<br>
[*] * 如果D没有参与作案,则E也不可能参与作案。<br>
[*] * 试编一程序,将作案人找出来。
[*] * 
[*] * @author 赵学庆,Java世纪网(java2000.net)
[*] * 
[*] */<span />
[*]public class T {
[*]  public static void main(String[] args) {
[*]    // TODO Auto-generated method stub<span />
[*]    String[] persons = { "A", "B", "C", "D", "E", "F" };
[*]    for (int i = 0; i <= 63; i++) {
[*]      int t = i;
[*]      int num[] = new int;
[*]      int j = 5;
[*]      for (; j >= 0; j--) {// 换成二进制数码,保存在一个6个元素的一维数组中<span />
[*]        if (t / 2 > 0) {
[*]          num = t % 2;
[*]          t = t / 2;
[*]        } else {
[*]          num = t;
[*]          break;
[*]        }
[*]      }
[*]      // num--num代表A--F<span />
[*]<span />
[*]      // 代表AB至少有一个人作案<span />
[*]      if (num + num >= 1) {
[*]        // AEF 至少2个人作案<span />
[*]        if (num + num + num >= 2) {
[*]          // AD 不是同案犯。但可能都没作案或其中一个作案<span />
[*]          if (num + num <= 1) {
[*]            // BC 同时作案,或者同时没作案<span />
[*]            if ((num + num == 0 || num + num == 2)) {
[*]              // CD肯定有一个人作案了<span />
[*]              if (num + num == 1) {
[*]                // 如果D没作案且E也没作案,或者 D作案了了<span />
[*]                if (num == 0 && num == 0 || num == 1)
[*]                  for (int index = 0; index < num.length; index++) {
[*]                    if (num == 1) {
[*]                      System.out.print(persons);
[*]                    }
[*]                  }
[*]              }
[*]            }
[*]          }
[*]        }
[*]      }
[*]<span />
[*]    }
[*]<span />
[*]  }
[*]<span />
[*]}
页: [1]
查看完整版本: 一道六嫌疑犯的逻辑判断题