谁是嫌疑犯问题
问题描述:
有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条事实:A+B≥1;至少1人作案
第2条事实:A+B+F≥2;至少2人作案
第3条事实:A*D=0,或A+D≤1;不可能是同案犯
第4条事实:B=C;B作案C也作案,B不作案C也不作案,
第5条事实:C+D=1;有且仅有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'第{n+1}种作案方案:')for i in result:print(f'{i[0]}: {i[1]}')n = n + 1
print(f'\n总共有{n}种作案方案。')
运行结果:
相关文章:

谁是嫌疑犯问题
问题描述: 有6名犯罪嫌疑人A、B、C、D、E、F,已知如下事实: A、B至少有1人作案; A、E、F三人中至少有2人参与作案; A、D不可能是同案犯; B、C或同时作案,或与本案无关; C、D中…...

Netty中使用编解码器框架
目录 什么是编解码器? 解码器 将字节解码为消息 将一种消息类型解码为另一种 TooLongFrameException 编码器 将消息编码为字节 将消息编码为消息 编解码器类 通过http协议实现SSL/TLS和Web服务 什么是编解码器? 每个网络应用程序都必须定义如何…...

【漏洞复现】斐讯FIR151M路由器未授权下载漏洞
Nx01 产品简介 斐讯数据通信技术有限公司成立于2009年,是为用户提供智慧家庭领域智能产品和云服务的科技创新性企业。 Nx02 漏洞描述 斐讯 FIR151M路由器配置文件未授权下载漏洞,攻击者可利用该漏洞获取敏感信息。 Nx03 产品主页 fofa-query: app"PHICOMM-F…...

【SpringBoot】application配置(5)
type-aliases-package: com.rabbiter.cm.domaintype-aliases-package: 这个配置用于指定mybatis的别名,别名是一个简化的方式,让你在Mapper xml 文件中引用java类型,而不需要使用使用完整的类名。例如,如果你在 com.rabbiter.cm.d…...

Linux安全技术与iptables防火墙
一.安全技术: 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全决策依据,…...
QT QCombox 样式表 比起作用
对QCombox在ui编辑器中进行美化,发现外表美化有效果,但下拉框的高度美化的没效果,查看样式表也没有没问题,样式表中内容如下。 QComboBox#curve_comboBox {min-width: 150px;min-height:40;max-width: 150px;max-height:40;borde…...

在 Windows 10 上使用 Visual Studio 2022 进行 C++ 桌面开发
工具下载链接:https://pan.quark.cn/s/c70b23901ccb 环境介绍 在今天的快速发展的软件开发行业中,选择合适的开发环境是非常关键的一步。对于C开发人员来说,Visual Studio 2022(VS2022)是一个强大的集成开发环境&…...

如何安装x11vnc并结合cpolar实现win远程桌面Deepin
文章目录 1. 安装x11vnc2. 本地远程连接测试3. Deepin安装Cpolar4. 配置公网远程地址5. 公网远程连接Deepin桌面6. 固定连接公网地址7. 固定公网地址连接测试 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂ÿ…...
C++基础入门Day1
C基础入门Day1 1.1 第一个C程序 编写一个C程序需要四个步骤 创建项目创建文件编写代码运行程序 1.1.1 创建项目 VS2022 1.1.2 创建文件 main.cpp 1.1.3 编写代码 注意:编写时键盘必须调整成英文 基本框架 #include <iostream> using namespace std…...

【高质量精品】2024美赛A题22页word版成品论文+数据+多版本前三问代码及代码讲解+前四问思路模型等(后续会更新)
一定要点击文末的卡片,进入后,即可获取完整资料后续参考论文!! 整体分析:这个题目是一个典型的生态系统建模问题,涉及到动物种群的性比例变化、资源可用性、环境因素、生态系统相互作用等多个方面。这个题目的难点在于如何建立一个合理的数学…...
Spark context stopped while waiting for backend
目录 报错信息 解决办法 解释 报错信息 Spark context stopped while waiting for backend 翻译过来就是 :Spark上下文在等待后端时停止 解决办法 通过在yarn-site.xml中添加如下配置项,并重启yarn,程序在 “–driver-memory 600m --e…...
保研机试算法训练个人记录笔记(三)
目录 基于范围的for循环 push_back return {it->second, i} 基于范围的for循环 for (const string& ageValue : age["Peter"]) 是C中的一种范围基于的for循环(也称为基于范围的for循环),它用于遍历容器中的元素。在这个…...

2月6日作业
1.现有无序序列数组为23,24,12,5,33,5347,请使用以下排序实现编程 函数1:请使用冒泡排序实现升序排序 函数2:请使用简单选择排序实现升序排序 函数3:请使用快速排序实现升序排序 函数4:请使用插入排序实现升序排序 #include<stdio.h> #include<string.h&…...
rust给py写拓展如此简单
很久没写rust,主要是写业务逻辑实在用不上这高性能.不过惊奇发现rust和py结合的如此之好,记录下: 搞一个python环境,pip install maturin建立一个项目文件,cd进去 maturin init照着生成模版正常写rust,完毕后maturin develop,注意这个命令包括把拓展包安装到虚拟环境site pack…...

白嫖10款游戏加速器,一年都不用开会员!
过年期间你们是走亲串戚还是窝家玩游戏、追剧?相信很多小伙伴都不会放过这个难得的假期,肯定是会百忙之中来两把的,那么人一多玩游戏肯定就会拥堵,有延迟。解决延迟最好的办法就是用加速器,当你的网络比别人强时&#…...

Kafka SASL_SSL双重认证
文章目录 1. 背景2. 环境3. 操作步骤3.1 生成SSL证书3.2 配置zookeeper认证3.3 配置kafka安全认证3.4 使用kafka客户端进行验证3.5 使用Java端代码进行认证 1. 背景 kafka提供了多种安全认证机制,主要分为SASL和SSL两大类。 SASL: 是一种身份验证机制&…...

css新手教程
css新手教程 课程:14、盒子模型及边框使用_哔哩哔哩_bilibili 一.什么是CSS 1.什么是CSS Cascading Style Sheet 层叠样式表。 CSS:表现(美化网页) 字体,颜色,边距,高度,宽度&am…...

spring boot(2.4.x之前版本)和spring cloud项目中配置文件的作用
spring 版本以及相关的组件一直在变化,其中一些类或者功能在低版本中有,高版本中去掉了,有的新功能只在高版本有。 为了防止理解问题,pom.xml 版本依赖如下 <parent><groupId>org.springframework.boot</groupId…...

web前后端小坑记录
游戏服务器过年这段时间忙完了,好久没看web了,重温一下。发现竟然没有文章记录这些修BUG的过程,记录一下。 目录 如何处理F5刷新? 如何处理F5刷新? 后端应该发现路由不存在,直接返回打包好的index.html就…...

股票K线简介
股票K线(K-Line)是用于表示股票价格走势的图形,主要由四个关键价格点组成:开盘价、收盘价、最高价和最低价。K线图广泛应用于股票市场技术分析中,它提供了丰富的信息,帮助分析师和投资者理解市场的行情走势…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...