一类简单离散数学推理题的代码实现原理

离散数学第一章习题 阅读详情

这三道题的做法基本相同 ,所以写的较为简便。

题目1:某件事是甲,乙,丙,丁4人干的,询问4人后回答如下:1):甲说是丙干的;2)乙说我没干;3):丙说甲讲的不对;4):丁说是甲干的。若其中3人说的是对的,1人说的是错的。问是谁干的?

1:设命题a,b,c,d分别表示是甲,乙,丙,丁干的,翻译每句话后即可用编程实现,具体代码如下:

#include<iostream>
using namespace std;
int main(){
	int a,b,c,d,q,r,s,m;//a,,b,c,d分别表示是这件事是甲,乙,丙,丁干的 ,q,r,s,m分别表示四句话翻译后的表达式 
	for(int a=0;a<=1;a++){
		for(int b=0;b<=1;b++){
			for(int c=0;c<=1;c++){
				for(int d=0;d<=1;d++){
					q=(a||b||c||d)&&!b&&!c&&(a&&!b&&!c&&!d);
					r=(!a&&!b&&c&&!d)&&b&&!c&&(a&&!b&&!c&&!d);
					s=(!a&&!b&&c&&!d)&&!b&&c&&(a&&!b&&!c&&!d);
					m=(!a&&!b&&c&&!d)&&!b&&!c&&!(a&&!b&&!c&&!d);
					if(q||r||s||m){
						if(a==1) cout<<"甲干的";
						if(b==1) cout<<"乙干的";
						if(c==1) cout<<"丙干的";
						if(d==1) cout<<"丁干的";
					}
				}
			}
		}
	}
	return 0;
} 

题目2:在某次研讨会的中间休息时间,3名与会者根据王教授的口音对他是哪个省市的人判断如下:
甲:王教授不是苏州人,是上海人。
乙:王教授不是上海人,是苏州人。
丙:王教授既不是上海人,也不是杭州人。

#include<iostream>
using namespace std;
int main(){
	int p,q,r,a1,a2,a3,a4,a5,a6;//p,q,r分别表示王教授是苏州,上海,杭州人; 
    for(int p=0;p<=1;p++)
        for(int q=0;q<=1;q++)
            for(int r=0;r<=1;r++)
                a1=(!p&&q)&&((p&&q)||(!p&&!q))&&(q&&r);//a1~a6代表翻译后的六种可能情况; 
                a2=(!p&&q)&&(!p&&q)&&((!q&&r)||(q&&!r));
                a3=((!p&&!q)||(p&&q))&&(p&&!q)&&(q&&r);
                a4=((!p&&!q)||(p&&q))&&(!p&&q)&&(!q&&!r);
                a5=(p&&!q)&&((p&&q)||(!p&&!q))&&((!q&&r)||(q&&!r));
                a6=(p&&!q)&&((p&&q)||(!p&&!q))&&(!q&&!r);
                if((a1||a2|a3||a4||a5||a6)&&(p+q+r==1)){
        	        if(p==1) cout<<"王教授是 苏州人";
        	        if(q==1) cout<<"王教授是 上海人";
        	        if(r==1) cout<<"王教授是 杭州人"; 
	}
	return 0;
}

题目三:29:在某班班委成员的选举中,已知王小红、李强、丁金生三位同学被选进了班委会,该班的甲,乙,两三名学生预言如下。
甲说:王小红为班长,李强为生活委员。
乙说:丁金生为班长,王小红为生活委员。
丙说:李强为班长,王小红为学习委员。
班委会分工名单公布后发现,甲、乙、丙三人都恰好猜对了一半。问:王小红,李强,丁金生各任何职?
解法见如下代码:

#include<iostream>
using namespace std;
int main(){
	int a,b,c,d,e,f;//a:王是班长,b:丁是班长,c:李强是班长,d:李强是生活委员,e:王是生活委员,f:王是学习委员;
	for(int a=0;a<=1;a++){
		for(int b=0;b<=1;b++){
			for(int c=0;c<=1;c++){
				for(int d=0;d<=1;d++){
					for(int e=0;e<=1;e++){
						for(int f=0;f<=1;f++){
							if(((a&&!d)||(!a&&d))&&((b&&!e)||(!b&&e))&&((c&&!f)||(!c&&f))&&(a+b+c==1)&&(d+e==1)&&(a+e+f==1)){
								if(a==1) cout<<"王是班长"<<endl;
								if(b==1) cout<<"丁是班长"<<endl;
								if(c==1) cout<<"李强是班长"<<endl;
								if(d==1) cout<<"李强是生活委员"<<endl;
								if(e==1) cout<<"王是生活委员"<<endl;
								if(f==1) cout<<"王是学习委员"<<endl; 
							}
						}
					}
				}
			}
		}
	} 
	return 0;
}

离散数学拾趣(二):逻辑难题 Raymond Smullyan与岛屿居民难题 Raymond Smullyan是美国的数学家和逻辑学家,他写过多本与逻辑难题的书。其中的一类题目是,通过逻辑推理确定给定的几个岛屿居民的身份。看下面两题。 Q1(1.1例15):一个岛上居住着两类人——骑士和流氓。骑士说的都是真话,而流氓总是说谎。现在碰到了两个人A和B,如果A说“B是骑士”,B说“我们两人不是一类人”。请判断A、B两人到底是骑... 阅读详情

相关推荐

离散数学速成秘籍:从零基础到考场高分的实战路径

本文提供了一套高效的离散数学速成方法,帮助零基础学生在24小时内掌握核心考点。通过资源整合、三阶冲刺法和考场应对策略,重点攻克命题逻辑、自然推理系统等难点,实现从零基础到考场高分的快速突破。

weixin_29055137的博客 325

离散数学——命题逻辑代码实现

例1: ​ # ls = [0,1] # for z in ls: # for li in ls: # for w in ls: # s1=(li==1) # s2=(w==1) # s3=(z+li==2) # if(s1+s2+s3==2 and z+li+w==1)\k # or(s1+s2+s3==1 and z+li+w==2)\ #

weixin_64417453的博客 2070

离散数学“劝退”指南:避开命题逻辑学习中的3个常见坑(附正确思路)

本文深入剖析离散数学命题逻辑学习中的三大常见误区,包括自然语言符号化转换、范式转换技巧及推理证明中的逻辑跳跃。针对条件语句混淆、主析取/合取范式转换等高频错误,提供实用解题框架和记忆技巧,帮助学习者避开命题逻辑学习中的典型陷阱,建立系统化的解题思维。

weixin_26759093的博客 330

【文心一言】什么是文心一言,如何获得内测和使用方法。

文心一言(英文名:ERNIE Bot)是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动,回答问题,协助创作,高效便捷地帮助人们获取信息、知识和灵感。文心一言是知识增强的大语言模型,基于飞桨深度学习平台和文心知识增强大模型,持续从海量数据和大规模知识中融合学习具备知识增强、检索增强和对话增强的技术特色。

weixin_50804299的博客 2万+

别再死记硬背了!用‘知识卡片+思维导图’法搞定离散数学里的命题、谓词与代数系统

本文介绍了一种高效学习离散数学的方法,结合‘知识卡片+思维导图’技巧,帮助学习者掌握命题逻辑、谓词逻辑与代数系统等抽象概念。通过Anki和XMind工具的应用,实现概念具象化与知识体系整合,显著提升学习效率和成绩。

weixin_27697385的博客 377

yoloV5-matlab:简单的推理代码,只需运行 demo.mlx-matlab开发

Import yolov5*.onnx for inference, including yolov5s.onnx, yolov5m.onnx, yolov5l.onnx, yolov5x.onnx, the original output dimension is 1*255*H*W(Other dimension formats can be slightly modified), import (importONNXFunction) + detection in matlab Head decoding output. 导入yolov5*.onnx进行推理(inference),包括yolov5s.onnx,yolov5m.onnx,yolov5l.onnx,yolov5x.onnx,其原始输出维度为1*255*H*W(其他维度形式可稍作修改), 在matlab中导入(impor

【离散数学】编程练习:求关系的传递闭包

输入 一次输入一个关系矩阵,每一行两个相邻元素之间用一个空格隔开,输入元素的行与列分别对应关系矩阵的行与列。关系的基数小于12。 输出 输出该关系的传递闭包所对应的关系矩阵。 友情提示:可以使用while (scanf("%d",&a)!=EOF) #include <stdio.h> #include <math.h> #define MAX 101 int...

梁瑛平的博客 6321

NGSIM数据集字段解析:从车辆轨迹到交通行为分析

本文深度解析NGSIM数据集的核心字段及其在交通行为分析中的应用。详细解读了车辆时空定位、状态属性及交互关系等关键字段,并通过高速路“幽灵堵车”和城市路口左转行为两个实战案例,展示了如何利用该数据集进行微观交通行为建模与驾驶特征提取,为交通流研究和自动驾驶算法测试提供数据基础。

weixin_29172963的博客 148

离散数学复习:命题逻辑的推理理论

命题逻辑的推理理论

weixin_45745854的博客 2442

高分辨率航拍图像的目标检测切图优化策略

本文深入探讨了高分辨率航拍图像目标检测中的切图优化策略。针对大尺寸图像直接缩放导致小目标信息丢失的问题,文章详细阐述了基于重叠切割的核心方法,包括如何根据目标尺寸确定切图尺寸与重叠率,并提供了从切图到坐标还原的完整代码实现与避坑指南,有效提升检测精度与效率。

xk7n92h3p5m的博客 1114

modelsim软件安装教程及踩坑(极简版)

1.安装的网盘链接:链接:https://pan.baidu.com/s/1ltUfssyXlCnqDmLhWyhlwA提取码:jery 2.步骤(参考博文):https://blog.youkuaiyun.com/weixin_42693097/article/details/90523692?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163521788716780357213801%2522%252C%2522scm%2522%253A%2522

subtitle_的博客 3781

离散数学第一章的小练习(数理逻辑)

离散数学第一次作业就花了我将近两天时间,虽然已经完成有一段时间了但还是mark一下,毕竟还是有点点成就感的哈哈哈哈 $F:(1)\neg(p\rightarrow q)\\(2)p\land\neg q\\(3)\neg(\neg p\vee q)//(4)p\land(q\uparrow q)\Leftrightarrow(p\uparrow(q\uparrow q)\uparrow(p\uparrow(q\uparrow q))\\(5)(p\downarrow p)\downarrow q$\\ $G

Summeryyyy的博客 879

网卡Inter (R) Wi-Fi 6 AX201突然故障 错误代码10,无法找到无线网络,蓝牙也无效了

问题描述 说来也是坑,简直就莫名其妙。早上在工位上,电脑一切正常(一直用的是无线网络),然后周五准备开周会了,所以拔掉电脑外接设备(电源线,鼠标,外接显示器)拿起电脑到会议室。到了会议室之后,无线网断开了(但一般是不会断开的,都在公司范围内),所以选择重连,但发现已经没有无线网络列表了。 电脑机型:联想YOGA 14s 2021 初步尝试 1、关闭开始飞行模式 - 无果 2、重启并重启 (因为前两天已经提醒过有windows更新,趁这个机会就更新并重启了)- 无果 3、下载鲁大师、驱动精灵、联想驱动管

疯狂的蜗牛 5万+

HNU离散数学2023期中考试原题及答案

HNU2023年离散数学期中考试

obstacle19的博客 3430

Plant Simulation 双深位立库开发系列教程-货架参数化

为了方便用户进行货架参数化,我们需要在交互界面上进行参数调整,右键打开RackLane,打开Dialog,在Rack_tab的tab下创建相应的对象,并创建NumberOfRightRack和NumberOfLeftRack作为数据连接对象。通过Rack._3D.VisibleGraphicGroups := ["default"]来切换需要显示的Rack,当不需要显示则可以Rack._3D.VisibleGraphicGroups := [""]即可。首先,加载默认的HBW库到模型中,确保结构树当中有。

santayana的专栏 1260

基于lstm+gru+transformer的电池寿命预测健康状态预测-完整数据代码

基于lstm+gru+transformer的电池寿命预测健康状态预测-完整数据代码

882

离散数学:容斥原理

这题答案有点问题,并不能满分通过,想满分的移步吧,只提供一个思路,思路是没问题的 提示:求两个整数a, b的最小公倍数lcm(a,b),可以利用a, b的最大公约数gcd(a,b)来完成,即lcm(a, b) = a*b/gcd(a, b) gcd可以这样写: int gcd(int a, int b) { return a ? gcd(b % a, a) : b; } 样例输...

zb_tjw的博客 2578

STM32实战开发(99):基于STM32的智能交通灯控制系统设计与实现

随着城市化进程的加速和交通流量的不断增长,传统的交通灯控制系统已逐渐不能满足现代城市交通管理的需求。为了更好地提高交通效率、减少交通拥堵、降低事故发生率,智能交通灯控制系统成为了解决这一问题的重要途径。通过智能算法和自动化控制,智能交通灯控制系统能够根据实时交通流量和交通状况来自动调整红绿灯的切换,从而优化交通流和提高交通安全。STM32作为一款高性能的微控制器,具备较强的运算能力、丰富的外设接口和优良的功耗表现,非常适合用来设计和开发智能交通灯控制系统。

2201_76125393的博客 1219

借助离散数学解决“哈弗大学智商测试”一题 --编程算法

1、逻辑推理题: 读完本题,相信很多人都能得到正确答案。下面,通过离散数学的知识解答本题。 2、借助离散数学解决该问题 解: P1:这个人是皇帝 P2:这个人是守财奴 P3:这个人是穷人 题设“皇帝不是穷人”: 题设“在守财奴中也有穷人”: 因为: 所以: 即:有一些人是守财奴,并不是皇帝 【正确答案】守财奴,皇帝 转载于:https://www.cnblogs.co...

weixin_30679823的博客 200

OdomLaserCalibraTool标定工具的使用及踩坑记录

首先欢迎扫码关注我的微信公众号【SLAM及ROS学习笔记】 GitHub地址 GitHub - tzhangZJU/OdomLaserCalibraTool: Extrinsic Calibration of a Odom and 2d Laser 作者博客 2d Laser 和 Odomter 内外参数标定工具原理及使用方法_知行合一-优快云博客 其实只是记录了一下我自己的标定过程,和错误解决方法。其实博客和GitHub中也有提及 Error1 这个是由于.

Studying…… 1757

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

求与下面谓词公式等值的前束范式_暨南大学离散数学周密试卷数理逻辑与集合论—参考试卷教程.doc...

暨南大学离散数学周密试卷数理逻辑与集合论—参考试卷教程暨南大学《数理逻辑与集合论》试卷 考生姓名: 学号:第 PAGE 9 页 共 NUMPAGES 9A 页第 PAGE 1 页 共 NUMPAGES 9 A页暨 南 大 学 考 试 试 卷教师填写2010 – 2011 学年度第 2 学期课程名称: 数理逻辑与集合论 ...

weixin_39796363的博客 650

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

离散数学-逻辑和证明基础1.1(命题逻辑)

令。

weixin_45911156的博客 1435

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Hive共享台账揭秘:tracker、任务计划、事件总线与提醒中心4大协调底座

Hive 是一个面向生产环境的 Multi-Agent Harness(多智能体协作框架),它不靠画好的流程图,而是靠四大协调底座让"蜂后(Queen)+ 一群 Worker"自主协同:共享台账 **tracker**、持久化**任务计划**、实时**事件总线**和**提醒中心**。这篇文章用通俗的方式带你搞懂这套"蜂巢式"协作机制的工作原理。 [![Hive多Agent协调架构:构建、部署、运

gitblog_00472的博客 1016

求与下面谓词公式等值的前束范式_暨南大学离散数学周密试卷数理逻辑与集合论—参考试卷...

暨南大学离散数学周密试卷数理逻辑与集合论—参考试卷 第 1 页 共 9 A 页暨 南 大 学 考 试 试 卷得分 评阅人一、填空题(共 10 小题,每小题 2 分,共 20 分)1. 设命题 p:罗素悖论的真值为假,q:暨南大学的校训是信敏廉毅,r:离散数学是计算机科学不可分割的一门基础课程,则复合命题:的真值为 ;rqprp2. 下列各式中为永真式的有: (1) (2)...

weixin_39632467的博客 453

黑帽子,白帽子——一道推理题的证明

在所有人均能合理推理的情况下,无论开多少次灯,戴着白帽子的人肯定不会鼓掌,他们是一个等价类,所有戴黑帽子的人在每次开灯时看到的黑帽子的个数是一样的,除了在鼓掌之前,他还不能确定自己也是戴着黑帽子,所以,戴着黑帽子的人也属于一个等价类,他们每次的判断都是一致的。 设f(n)为黑帽子个数为n时有人鼓掌这种情况发生时的开灯次数,例如有3顶黑帽子,那么f(3)就表示鼓掌发生在第f(3)次开灯时。

unclerunning的博客 2万+

离散数学:2018年刑侦科推理试题

答案是:BCACACDABA 先来看看网上大神的做法: 下边是自己的解题过程,每一步的注释已经写得很详细,思路相对很清晰都能看懂,所以不再赘述,这里教学平台只能提交C所以需要java的自己稍作修改吧没什么区别 #include&lt;stdio.h&gt; void find(char p1[10]); char p[1048576][10]; void main(){ ...

zb_tjw的博客 2147
上一篇: 离散数学 用c++实现离散数学逻辑推理
下一篇: 离散数学——用c/c++求命题公式的主范式
Initial atom
博客等级 码龄5年 11粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值