C 解决谁是小偷逻辑问题

警察抓了 A、B、C、D 四名罪犯,其中一名是小偷,审讯的时候:

A说:“我不是小偷。”    x !=0
B说:“C 是小偷。”     x = 2
C说:“小偷肯定是 D。”  x = 3 
D说:“C 是在冤枉人。”  x != 3

现在已经知道四个人中三个人说的是真话,一个人说了假话,请判断一下到底谁是小偷?

 

代码

#include <iostream>
#include <string>
using namespace std;
// 在此处补充你的代码
void who_is_thief()
{
	// 枚举谁是小偷
	for (int x = 0; x < 4; x++)
	{
		int dis_a = (x != 0) ? 1 : 0;             // 我不是小偷
		int dis_b = (x == 2) ? 1 : 0;             // C是小偷
		int dis_c = (x == 3) ? 1 : 0;             // D是小偷
		int dis_d = 1 - dis_c;                    // C说的是不对的

		if ((dis_a + dis_b + dis_c + dis_d) == 3) // 三个人说的是真话  
		{
			char thief = 'A' + x;
			std::cout << "The thief is " << thief << std::endl;
			break;
		}
	}
}

int main()
{
	who_is_thief();
	system("pause");
}

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值