扶余网站建设,wordpress如何关闭标签功能,物业管理网站开发背景,国内优秀网站网址问题描述#xff1a;
有6名犯罪嫌疑人A、B、C、D、E、F#xff0c;已知如下事实#xff1a;
A、B至少有1人作案#xff1b;
A、E、F三人中至少有2人参与作案#xff1b;
A、D不可能是同案犯#xff1b;
B、C或同时作案#xff0c;或与本案无关#xff1b;
C、D中…问题描述
有6名犯罪嫌疑人A、B、C、D、E、F已知如下事实
A、B至少有1人作案
A、E、F三人中至少有2人参与作案
A、D不可能是同案犯
B、C或同时作案或与本案无关
C、D中有且仅有1人作案
如果D没有参与作案则E也不可能参与作案。请推理出谁作了案。
此题为多人作案(也可能仅一个作案)每人都有作案(1)和不作案(0)两种情况枚举各人是否作案再用“事实”来判定是否符合事实如符合则输出作案人。
解题思路
此题关键是怎样将文字描述的“事实”转变为计算机可能处理的条件式同时满足题目给出的六条“事实”。
如果用0表示不参与作案(简称不作案)1表示参与作案(简称作案)则
第1条事实AB≥1至少1人作案
第2条事实ABF≥2至少2人作案
第3条事实A*D0或AD≤1不可能是同案犯
第4条事实BCB作案C也作案B不作案C也不作案
第5条事实CD1有且仅有1人作案即1人作案另1人不作案
第6条事实D≥E只要D不作案E也不作案
下面是用枚举法遍历所有可能出现的罪犯组合挑选出符合条件的组合。
完整程序如下
问题描述有6名犯罪嫌疑人A、B、C、D、E、F已知如下事实
A、B至少有1人作案
A、E、F三人中至少有2人参与作案
A、D不可能是同案犯
B、C或同时作案或与本案无关
C、D中有且仅有1人作案
如果D没有参与作案则E也不可能参与作案。请推理出谁作了案。suspects [A, B, C, D, E, F]
criminal_dict {0: 未参与作案, 1: 参与作案}
n 0
for a in range(0, 2):for b in range(0,2):for c in range(0,2):for d in range(0,2):for e in range(0,2):for f in range(0,2):if (a b 1) and (a e f 2) and (a d 1) \and (b c) and (c d 1) and (d e):result zip(suspects, [criminal_dict[a],criminal_dict[b], criminal_dict[c],criminal_dict[d], criminal_dict[e],criminal_dict[f]])print(f第{n1}种作案方案:)for i in result:print(f{i[0]}: {i[1]})n n 1
print(f\n总共有{n}种作案方案。)
运行结果