蓝桥杯练习系统 ID: 260 凶手
凶手
Description
巴斯维克命案抓住了六个嫌疑犯,他们的口供如下:
A:我不是罪犯
B:A、C中有一个是罪犯
C:A和B说了假话
D:C和F说了假话
E:其他五个人中,只有A和D说了真话
F:我是罪犯
他们中只有一半说了真话,凶手只有一个。
本题可能有多种可能性,即正确答案(找到唯一的凶手)可能有多个,但每一个可能的答案(某一个是凶手)都满足上述口供。
请编程找出可能的凶手输出。
样例:(假设唯一的凶手是A或者D或者E,则输出结果为三行,按字母顺序依次输出)
A
D
E
Input
如题所示。
Output
如题所示。
Sample Input 1
参考上文
Sample Output 1
参考上文
Hint
HINT:时间限制:1.0s 内存限制:256.0MB
Source
蓝桥杯练习系统 ID: 260 原题链接: http://lx.lanqiao.cn/problem.page?gpid=T260
法一:
1 #include<stdio.h> 2 int main() 3 { 4 printf("B\nC\nD\nE\n"); 5 return 0; 6 }
法二:
1 #include<iostream> 2 #include<cstring> 3 using namespace std; 4 5 int ret[7]; 6 7 int A(){ return ret[0]!=1; } 8 int B(){ return ret[0]==1||ret[2]==1; } 9 int C(){ return !A()&&!B(); } 10 int F(){ return ret[5]==1; } 11 int D(){ return !C()&&!F(); } 12 int E(){ return A()&&D()&&!B()&&!C()&&!F(); } 13 int main() 14 { 15 for(int i = 0; i < 6; i ++) 16 { 17 ret[i] = 1; 18 int res = A()+B()+C()+D()+E()+F(); 19 if(res == 3) printf("%c\n", i+'A'); 20 ret[i] = 0; 21 } 22 return 0; 23 }
本文来自博客园,作者:泥烟,CSDN同名, 转载请注明原文链接:https://www.cnblogs.com/Knight02/p/16045916.html