5-谁是嫌疑犯——破案线索表示

*问题

  • A、B至少有一人作案
  • A、E、F三人中至少有两人参与作案
  • A、D不可能是同案犯
  • *B、C或同时作案,或与本案无关
  • C、D中有且仅有一人作案
  • *如果D没有参与作案,则E也不可能参与作案

A没参与作案

A == 0 或 A != 1

B参与作案

B == 1

A和B都参与作案

A == 1 并且 B == 1

逻辑运算符

&&与
image

||或

image

!非

image

image

break只退出一重循环,应设置【标志】found

TODO-1
image

image

/*
A、B至少有一人作案
A、E、F三人中至少有两人参与作案
A、D不可能是同案犯
* B、C或同时作案,或与本案无关
C、D中有且仅有一人作案
如果D没有参与作案,则D也不可能参与作案
 (A == 1) || (B == 1)
 (A == 1 && E == 1) || (A == 1 && F == 1) || (E == 1 && F == 1)
 !((A == 1) && (D == 1))
 (B == 1) && (C == 1) || (B == 0) && (C == 0)
 (C == 1) && (D == 0) || (C == 0) && (D == 1)
 (D == 0) && (E == 0) || (D == 1)
 */
#include <iostream>
using namespace std;

int main() {
	int A, B, C, D, E, F;
	bool found = false;
	for (A = 0; A <= 1 && !found; A++) {
		for (B = 0; B <= 1 && !found; B++) {
			for (C = 0; C <= 1 && !found; C++) {
				for (D = 0; D <= 1 && !found; D++) {
					for (E = 0; E <= 1 && !found; E++) {
						for (F = 0; F <= 1 && !found; F++) {
							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) {
								found = true;
								cout << A << B << C << D << E << F << endl;
							}
						}
					}
				}
			}
		}
	}

	return 0;
}

运行结果

image

posted @   彩红caihong  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示