题目:
警察局抓了A,B,C,D四名盗窃嫌疑犯,其中有一个人是小偷。审问情况:
A:我不是小偷
B:C是小偷
C:小偷肯定是D
D:C在冤枉人
现在已经知道其中有三个人说的是真话,一人说的是假话,请问到底谁是小偷?
分析(没看懂?先去看代码):
题目中 说现在已经知道其中有三个人说的是真话,一人说的是假话
所以 如果把所有人说的话用编程的表达式表示起来,4个表达式之和也就为3
于是我们只需要把循环遍历嫌犯是a,b,c,d,然后看看再嫌犯是谁的时候满足我们4个表达式
之和为3,然后再输出这个嫌犯就可以了
还没有看懂?没关系,先看代码:
代码:
#include <iostream>
using namespace std;
int main(){
//用1,2,3,4代表A,B,C,D
for (int i=1; i<=4; i++){ //假设i是小偷
if ((1!=i)+(3==i)+(4==i)+(4!=i)==3) //如果四条表达式之和为3,说明此时地i是小偷
{
printf("%d", i);//输出i
}
}
return 0;
}
如果想要获得更多有关C++地资料和题目讲解,请联系我发送 【创建群聊】
如果有很多人要创建群聊的话,我就创建群聊,具体详情可以私信我,谢谢支持。