某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:(1)A、B至少有一人作案;(2)A、E、F三人中至少有两人参与作案;(3)A、D不可能是同案犯;(4)B、C或同时作案,或与本案无关;(5)C、D中有且仅有一人作案;(6)如果D没有参与作案,则E也不可能参与作案。采用蛮力法设计算法将作案人找出来。
|| 表示先运算符号左边的东西,然后判断是否为true,是true就停下来直接输出不会再运行后面的东西,是false就继续运算右边的然后判断并输出。
&& 表示先运算符号左边的东西,然后判断是否为true,是true就继续运算右边的然后判断并输出,是false就停下来直接输出不会再运行后面的东西。
#include<iostream>
using namespace std;
int main()
{
int A, B, C, D, E, F;//定义A到E六个变量,作案等于1,否则等于0
for (A = 0; A <= 1; A += 1)
for (B = 0; B <= 1; B += 1)
for (C = 0; C <= 1; C += 1)
for (D = 0; D <= 1; D += 1)
for (E = 0; E <= 1; E += 1)
for (F = 0; F <= 1; F += 1)
{
if (6 ==
(A || B) //A、B 至少有一人作案
+ (!(A && D)) //A、D 不可能是同案犯
+ ((A && E) || (A && F) || (E && F)) //A、E、F 三人中至少有两人参与作案
+ ((B && C) || (!B && !C)) //B、C 或同时作案,或与本案无关
+ ((C && !D) || (D && !C)) //C、D 中有且仅有一人作案
+ (D || (!E)))//如果 D 没有参与作案,则 E 也不可能参与作案。
{
cout << "A " << "B " << "C " << "D " << "E " << "F " << endl;
cout << A << " " << B << " " << C << " " << D << " " << E << " " << F << " " << endl;
}
}
return 0;
}