- /**
- * 某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析: <br>
- * A、B至少有一人作案;<br>
- * A、E、F三人中至少有两人参与作案;<br>
- * A、D不可能是同案犯;<br>
- * B、C或同时作案,或与本案无关; C、D中有且仅有一人作案;<br>
- * 如果D没有参与作案,则E也不可能参与作案。<br>
- * 试编一程序,将作案人找出来。
- *
- * @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