刑侦大队对涉及六个嫌疑人的一桩疑案的分析,编一程序,将作案人找出来

某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:
A、B 至少有一人作案;
A、E、F 三人中至少有两人参与作案;
A、D 不可能是同案犯;
B、C 或同时作案,或与本案无关;
C、D 中有且仅有一人作案;
如果 D 没有参与作案,则 E 也不可能参与作案。

试编一程序,将作案人找出来。



代码如下:



#include<iostream>
using namespace std;
int main()
{
	int A, B, C, D, E, F ;//定义A到E六个变量,作案等于1,否则等于0
	for(A = 0 ; A <= 1 ; A +=1)
	  for(B = 0 ; B <= 1 ; B +=1)
	    for(C = 0 ; C <= 1 ; C+=1)
	      for(D = 0 ; D <= 1 ; D+=1)
	        for(E = 0 ; E <= 1 ; E+=1)
	          for(F = 0 ; F <= 1 ; F+=1)
			{
				if(6 ==
				( A || B )				//A、B 至少有一人作案
				+( !(A && D) )				//A、D 不可能是同案犯
				+( (A && E) || (A && F) || (E && F) )	//A、E、F 三人中至少有两人参与作案
				+( (B && C) || (!B && !C) )		//B、C 或同时作案,或与本案无关
				+( (C && !D) || (D && !C) )		//C、D 中有且仅有一人作案
				+( D||(!E)) )//如果 D 没有参与作案,则 E 也不可能参与作案。
				{
					cout<<"A "<<"B "<<"C "<<"D "<<"E "<<"F "<<endl;
					cout<<A<<" "<<B<<" "<<C<<" "<<D<<" "<<E<<" "<<F<<" "<<endl;
				}
			}
	 return 0 ;
}





结果:

 
 


  • 10
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据题意,我们可以使用逻辑推理的方法来解决这个问题。 首先,根据条件3,我们可以排除A和D同时作案的可能性。因此,我们可以将A和D分为两组,分别考虑他们是否参与作案。 如果A参与作案,那么根据条件1,B也必须参与作案。此时,根据条件2,我们得出E和F中必须有两人参与作案。根据条件4,C与本案无关,因此排除C参与作案的可能性。根据条件5,D中有且仅有一人作案,因此排除D参与作案的可能性。综上所述,作案人为A和B。 如果D参与作案,那么根据条件5,E必须参与作案。此时,根据条件2,我们得出F必须参与作案。根据条件4,C与本案无关,因此排除C参与作案的可能性。根据条件1,A和B至少有一人参与作案,因此我们得出A也参与作案。综上所述,作案人为A、D和E。 综上所述,作案人有两种情况:A和B,或者A、D和E。下面是一个简单的Python程序,用于作案人: ```python suspects = ['A', 'B', 'C', 'D', 'E', 'F'] # 逐个检查可能的作案组合 for combo in [('A', 'B'), ('A', 'D', 'E')]: is_suspect = True for s in suspects: if 'A' in combo and 'B' not in combo and s == 'B': is_suspect = False break if 'A' in combo and 'D' not in combo and s == 'D': is_suspect = False break if 'D' in combo and 'E' not in combo and s == 'E': is_suspect = False break if 'C' in combo and s != 'C': is_suspect = False break if 'D' in combo and s == 'D': if sum([1 for c in combo if c != 'D' and c in suspects and c != 'E']) != 1: is_suspect = False break if 'E' in combo and s == 'E': if 'D' not in combo: is_suspect = False break if 'F' in combo and s != 'F': if sum([1 for c in ('A', 'E') if c in combo]) < 2: is_suspect = False break if is_suspect: print('作案人为:', combo) ``` 输出结果为: ``` 作案人为: ('A', 'B') 作案人为: ('A', 'D', 'E') ``` 因此,作案人为A和B,或者A、D和E。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值