题目描述
巴斯维克命案抓住了六个嫌疑犯,他们的口供如下:
A:我不是罪犯
B:A、C中有一个是罪犯
C:A和B说了假话
D:C和F说了假话
E:其他五个人中,只有A和D说了真话
F:我是罪犯
他们中只有一半说了真话,凶手只有一个。
本题可能有多种可能性,即正确答案(找到唯一的凶手)可能有多个,但每一个可能的答案(某一个是凶手)都满足上述口供。
请编程找出可能的凶手输出。
(假设唯一的凶手是A或者D或者E,则输出结果为三行,按字母顺序依次输出)
输入
无
输出
无
样例输入
无
样例输出
A
D
E
代码如下:
#include <iostream>
using namespace std;int main() {for (int i = 1; i <= 6; i++)//i = 1表示凶手是A,从A到F枚举可能是凶手的情况{int cnt = 0;if (i != 1)//A说的是真话cnt++;if (i == 1 || i == 3)//B说的是真话cnt++;//C说的一定是假话if (i != 6)//D说的是真话cnt++;if (i != 1 && i != 3 && i != 6)//E说的是真话cnt++;if (i == 6)//F说的是真话cnt++;if (cnt == 3) {if (i == 1)cout << "A" << endl;else if (i == 2)cout << "B" << endl;else if (i == 3)cout << "C" << endl;else if (i == 4)cout << "D" << endl;else if (i == 5)cout << "E" << endl;else if (i == 6)cout << "F" << endl;}}return 0;
}