您的位置:首页 > 其它

MOOC清华《程序设计基础》第3章:谁是嫌疑犯(位运算循环枚举)

2017-06-29 17:40 375 查看
某市刑侦大队正在调查一桩疑案,对涉及到的六名嫌疑人进行分析。已知有如下事实:

(1)A、B至少有一人作案;

(2)A、E、F中至少有两人作案;

(3)A、D不可能是同案犯;

(4)B、C或同时作案,或与本案无关;

(5)C、D中有且仅有一人作案;

(6)如果D没有作案,那么E也不可能作案。

请问:谁是嫌疑犯?

#include <iostream>
using namespace std;

int main()
{
for(int i = 0; i < (1 << 6); i++)
{
int A = (i >> 5) & 1;
int B = (i >> 4) & 1;
int C = (i >> 3) & 1;
int D = (i >> 2) & 1;
int E = (i >> 1) & 1;
int F = i & 1;

bool b1 = (A == 1)||(B == 1);
bool b2 = ((A == 1)&&(E == 1))||
((A == 1)&&(F == 1))||
((E == 1)&&(F == 1));
bool b3 = !((A == 1)&&(D == 1));
bool b4 = ((B == 1)&&(C == 1))||
((B == 0)&&(C == 0));
bool b5 = ((C == 1)&&(D == 0))||
((C == 0)&&(D == 1));
bool b6 = ((D == 0)&&(E == 0))||(D == 1);
if(b1 && b2 && b3 && b4 && b5 && b6)
{
cout << A << B << C << D << E << F << endl;
break;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐