蓝桥杯 谁干的好事? 暴力
作者:互联网
问题描述
ABCDE中num个人做了好事,truth个人说真话。
A说:“我和X中有且只有一个做了好事”
B说:“C和E中有人做了好事”
C说:“我和D和A中有人做了好事”
D说:“B和C都没有做好事”
E说:“我没有做好事”
请问有哪些人做了好事?
多组方案请一行一个输出。 输入格式 仅一行,先是一个整数num,接着是一个A~E的字符X,最后是一个整数truth。意义见题面。 输出格式 每行输出一组方案,方案中按 字母序 输出做好事的人的代号(A~E),不要空格隔开。
如果没有合法方案,输出一行一个0即可。 样例输入 1 E 2 样例输出 0 样例输入 2 E 2 样例输出 BD
BE 数据规模和约定 规定,1 <= num <= 2。 参考自https://blog.csdn.net/weixin_45276914/article/details/104772434,思路很清晰。 就是假定num=1时,枚举说真话的是A或B或C或D或E,得出对应的truth等于多少。 再假定num=2时,枚举说真话的是AB或AC或AD或AE或BC或BD或BE或CD或CE或DE时,得出对应的truth等于多少。 最后得出一张表,根据表值写if判断,原贴疑似笔误将num=2,说真话的是AE时的情况写错了,当X为E时为3,否则应为4。 本题不涉及算法知识,完全的手算所有情况,演草纸写三张,浪费时间,不过锻炼思维逻辑。
A说:“我和X中有且只有一个做了好事”
B说:“C和E中有人做了好事”
C说:“我和D和A中有人做了好事”
D说:“B和C都没有做好事”
E说:“我没有做好事”
请问有哪些人做了好事?
多组方案请一行一个输出。 输入格式 仅一行,先是一个整数num,接着是一个A~E的字符X,最后是一个整数truth。意义见题面。 输出格式 每行输出一组方案,方案中按 字母序 输出做好事的人的代号(A~E),不要空格隔开。
如果没有合法方案,输出一行一个0即可。 样例输入 1 E 2 样例输出 0 样例输入 2 E 2 样例输出 BD
BE 数据规模和约定 规定,1 <= num <= 2。 参考自https://blog.csdn.net/weixin_45276914/article/details/104772434,思路很清晰。 就是假定num=1时,枚举说真话的是A或B或C或D或E,得出对应的truth等于多少。 再假定num=2时,枚举说真话的是AB或AC或AD或AE或BC或BD或BE或CD或CE或DE时,得出对应的truth等于多少。 最后得出一张表,根据表值写if判断,原贴疑似笔误将num=2,说真话的是AE时的情况写错了,当X为E时为3,否则应为4。 本题不涉及算法知识,完全的手算所有情况,演草纸写三张,浪费时间,不过锻炼思维逻辑。
1 #include <bits/stdc++.h> 2 using namespace std; 3 int main() { 4 int num, truth; 5 string op; 6 cin >> num >> op >> truth; 7 vector<string> v; 8 if (num == 1) { 9 if (truth == 1) { 10 if (op != "B") { 11 v.push_back("B"); 12 } 13 } 14 if (truth == 2) { 15 if (op == "B") { 16 v.push_back("B"); 17 } 18 if (op != "E") { 19 v.push_back("E"); 20 } 21 } 22 if (truth == 3) { 23 if (op != "C") { 24 v.push_back("C"); 25 } 26 if (op != "D") { 27 v.push_back("D"); 28 } 29 if (op == "E") { 30 v.push_back("E"); 31 } 32 } 33 if (truth == 4) { 34 v.push_back("A"); 35 if (op == "C") { 36 v.push_back("C"); 37 } 38 if (op == "D") { 39 v.push_back("D"); 40 } 41 } 42 } 43 if (num == 2) { 44 if (truth == 1) { 45 if (op != "B" && op != "E") { 46 v.push_back("BE"); 47 } 48 } 49 if (truth == 2) { 50 if (op == "B") { 51 v.push_back("AB"); 52 } 53 if (op != "B" && op != "D") { 54 v.push_back("BD"); 55 } 56 if (op == "B" ||op == "E") { 57 v.push_back("BE"); 58 } 59 if ((op != "E") && (op != "C")) { 60 v.push_back("CE"); 61 } 62 } 63 if (truth == 3) { 64 if (op == "E") { 65 v.push_back("AE"); 66 } 67 if (op != "B") { 68 v.push_back("AB"); 69 } 70 if (op == "C") { 71 v.push_back("AC"); 72 } 73 if (op == "D") { 74 v.push_back("AD"); 75 } 76 if (op != "B" && op != "C") { 77 v.push_back("BC"); 78 } 79 if (op == "B" || op == "D") { 80 v.push_back("BD"); 81 } 82 if (op != "D" && op != "C") { 83 v.push_back("CD"); 84 } 85 if (op == "C" || op == "E") { 86 v.push_back("CE"); 87 } 88 if (op != "D" && op != "E") { 89 v.push_back("DE"); 90 } 91 } 92 if (truth == 4) { 93 if (op != "C") { 94 v.push_back("AC"); 95 } 96 if (op != "D") { 97 v.push_back("AD"); 98 } 99 if (op != "E") { 100 v.push_back("AE"); 101 } 102 if (op == "B" || op == "C") { 103 v.push_back("BC"); 104 } 105 if (op == "C" || "D") { 106 v.push_back("CD"); 107 } 108 if (op == "C" || op == "E") { 109 v.push_back("DE"); 110 } 111 } 112 } 113 if (v.size() == 0) { 114 cout << 0 << endl; 115 } 116 for (int i = 0; i < v.size(); i++) { 117 cout << v[i] << endl; 118 } 119 return 0; 120 }
标签:&&,暴力,back,蓝桥,num,truth,push,好事,op 来源: https://www.cnblogs.com/fx1998/p/12615786.html