利用简单的算法解决逻辑推理问题(推测名次/推理谁说谎)

news2024/11/24 14:59:47

该算法很简单,以至于我们只需要三部分就可以完成。以这一题为例:

 我们创建一个数组arr[6] = { 1 }

arr[1]到arr[5]分别对应A B C E,数组的值对应的是他们的比赛名次。其中arr[0]是用来立个flag的(也就是说用来做标记)。

接下来我们只需要写两个判断语句,一个循环语句即可简单的解决这样的逻辑推理问题。

一是判断数组是否符合题目要求,我们易得:


		if ((arr[2] == 2 && arr[1] != 3) || (arr[2] != 2 && arr[1] == 3))
		{
			if ((arr[2] == 2 && arr[5] != 4) || (arr[2] != 2 && arr[5] == 4))
			{
				if ((arr[3] == 1 && arr[4] != 2) || ((arr[3] != 1 && arr[4] == 2)))
				{
					if ((arr[3] == 5 && arr[4] != 3) || ((arr[3] != 5 && arr[4] == 3)))
					{
						if ((arr[5] == 4 && arr[1] != 1) || ((arr[5] != 4 && arr[1] == 1)))
						{
							printf("A = %d, B = %d, C = %d, D = %d, E = %d", arr[1], arr[2], arr[3], arr[4], arr[5]);					
						}
					}
				}
			}
		}

为了不让一个if语句特别长,所以就采用嵌套的形式了。接下来再写一个判断语句,即没有两个人的排名是一样的。易得:

int isDuplicate(int * arr, int len) 
{
	for (int i = 0; i < len; i++) {
		for (int j = i + 1; j < len; j++) 
		{
			if (arr[i] == arr[j]) 
			{
				return 0; // 返回0表示存在重复元素  
			}
		}
	}
	return 1; // 返回1表示不存在重复元素  
}

最后我们写一个循环,并且让随机数赋值给数组,然后循环判断,再用arr[0]立个flag就写完了。

以下是完整代码:

#include <stdio.h>  
#include <time.h> 

int isDuplicate(int * arr, int len) 
{
	for (int i = 0; i < len; i++) {
		for (int j = i + 1; j < len; j++) 
		{
			if (arr[i] == arr[j]) 
			{
				return 0; // 返回0表示存在重复元素  
			}
		}
	}
	return 1; // 返回1表示不存在重复元素  
}

int main()
{
	int arr[6] = { 0 };
	srand(time(NULL));

	while (arr[0] + 1)
	{
		for (int i = 1; i <= 5; i++)
		{
			arr[i] = rand() % 5 + 1;//让电脑来猜排名,通过循环一直猜,直到猜对为止。
		}

		if(isDuplicate(arr,6))//=如果为真则执行下面语句,否则一定是猜错了,继续猜。

		//这是判断语句,用于判断电脑是否猜对了
		if ((arr[2] == 2 && arr[1] != 3) || (arr[2] != 2 && arr[1] == 3))
		{
			if ((arr[2] == 2 && arr[5] != 4) || (arr[2] != 2 && arr[5] == 4))
			{
				if ((arr[3] == 1 && arr[4] != 2) || ((arr[3] != 1 && arr[4] == 2)))
				{
					if ((arr[3] == 5 && arr[4] != 3) || ((arr[3] != 5 && arr[4] == 3)))
					{
						if ((arr[5] == 4 && arr[1] != 1) || ((arr[5] != 4 && arr[1] == 1)))
						{
							printf("A = %d, B = %d, C = %d, D = %d, E = %d", arr[1], arr[2], arr[3], arr[4], arr[5]);
							arr[0] = -1;//猜对了后把arr[0]变成-1,这样循环就停止了。
						}
					}
				}
			}
		}
	}

	return 0;
}

代码的运行:

这个算法的核心思想是硬猜,没猜对就继续猜,直到猜对为止。因此为方法,做逻辑推问题时,我们只需要写一个判断语句判断是否猜对,没猜对就让电脑继续猜,直到猜对为止即可。算法非常简单又暴力。值得注意的是,如果你要提高运行效率,则需要生成不重复的随机数来猜。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/865865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻量的工作流引擎:告别低效,创造新高!

伴随着日益激烈的市场竞争&#xff0c;作为新时代的企业&#xff0c;如何在众多同质化竞争中脱颖而出&#xff0c;占有更多的市场份额&#xff0c;实现更大发展&#xff1f;此时此刻就需要拥有不同寻常的头脑&#xff0c;寻找不平常的路径&#xff0c;轻量的工作流引擎是低代码…

cron中文翻译工具类

实现效果 /*** cron转换中文工具类** author lixuan*/ public class CronUtil {private static final Logger LOGGER LoggerFactory.getLogger(CronUtil.class);/*** cron中文表达式*/private static final List<ValueLabelPair> HOUR_LIST generateValueLabelPairs(…

使用 Packet Tracer 查看协议数据单元

练习 2.6.2&#xff1a;使用 Packet Tracer 查看协议数据单元 地址表 本练习不包括地址表。 拓扑图 学习目标 捕获从 PC 命令提示符发出的 ping运行模拟并捕获通信研究捕获的通信从 PC 使用 URL 捕获 Web 请求运行模拟并捕获通信研究捕获的通信 简介&#xff1a; Wiresha…

Dynamics 365 实体配置各属性介绍

在主界面中,我们点击设置图标->高级设置->解决方案,即可跳转到解决方案配置页面。 解决方案的存在有两方面价值,一方面是方便我们对系统进行定制,比如新建实体。另一方面则是为了方便我们在不同的环境之间复制修改的内容,也即发布。 解决方案包配置 在解决方案包…

DERT:End-to-End Object Detection with Transformers

文章目录 摘要1、简介2、相关工作2.1、集合预测2.2、Transformer与并行解码2.3、目标检测 3、DETR模型3.1、目标检测集合预测损失3.2、DETR架构 4、实验4.1、与Faster R-CNN的对比4.2、消融4.3、分析4.4、用于全景分割的DETR 5、结论附录 AA.1、初步:多头注意层A.2、损失A.3、详…

广州华锐互动:电力VR安全体验让学员沉浸式感受安全危害

随着科技的不断发展&#xff0c;虚拟现实(VR)技术在电力安全体验中发挥着越来越重要的作用。VR技术可以提供一种沉浸式的体验&#xff0c;使学员更好地理解和掌握电气安全知识&#xff0c;从而减少意外事故的发生。 首先&#xff0c;VR技术可以模拟各种电气事故场景&#xff0…

最大交换(力扣)枚举 JAVA

给定一个非负整数&#xff0c;你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 10^8] 解题思路&#xff1a; 1、数最…

Figma高效工作秘笈:10个插件助你提效!

Figma插件本质上是遵循特定接口规范开发的小程序,对设计师来说,合理选择和使用Figma插件,可以极大地优化工作流程。不同的插件具有不同的用途,设计师可以根据实际需求选择适合的插件。市面上存在各种各样的Figma插件,初学者可能会不知所措。本文将推荐10款广受设计师欢迎、功能…

[Mongodb 5.0]单机启动

安装完mongodb后&#xff0c;会自动生成下面两个目录(mongod.conf中设定的)&#xff0c;用来存放日志和数据 /var/lib/mongo (数据目录) /var/log/mongodb (日志目录) 要启动一个单机版的mongodb&#xff0c;一般有两种方式&#xff1a; 第一种启动方式&#xff1a;直接使用…

SD NAND FLASH : 什么是pSLC?

一、什么是pSLC pSLC&#xff08;Pseudo-Single Level Cell&#xff09;即伪SLC&#xff0c;是一种将MLC/TLC改为SLC的一种技术&#xff0c;现Nand Flash基本支持此功能&#xff0c;可以通过指令控制MLC进入pSCL模式&#xff0c;存储时在MLC的每个单元中仅存储1bit数据&#x…

传值与传址问题

传值与传址实例 2023年上半年软考真题&#xff1a; 22、设函数foo和hoo的定义如下图所示&#xff0c;在函数foo中调用函数hoo&#xff0c;hoo的第一个参数采用传引用方式(call by reference)&#xff0c;第二个参数传值方式(call by value)&#xff0c;那么函数foo中的print(a…

试用智能编程助手

1 简介 网传有了大模型之后&#xff0c;很多人都要失业了&#xff0c;其中也包括一部分程序员&#xff0c;确实大模型可以减轻开发者的工作量&#xff0c;但是具体到减轻了多少工作量&#xff0c;哪种类型的工作&#xff0c;学习成本&#xff0c;使用成本如何&#xff1f;不捧…

【前端】CSS垂直居中的7种方法

文章目录 line-height绝对定位margin:autoflex绝对定位margin:负值定位transformvertical-align:middledisplay:table-cell思维导图 前文&#xff1a;【前端】CSS水平居中的6种方法_karshey的博客-CSDN博客 有很多相似的部分。 line-height 适用于单行的行内元素设置line-he…

灵眸:2023年上半年中国主要消费领域宏观数据概览报告(附下载)

关于报告的所有内容&#xff0c;公众【营销人星球】获取下载查看 核心观点 2023年上半年中国社会消费品零售总额22.8万化元。2023年上半年中国电商实体商品消费总额达6.1万亿元&#xff0c;同比增长10.8%。2023年上半年中国餐饮、汽车消费均超2万化元&#xff0c;餐饮、金银珠…

【网络层+数据链路层】深入理解IP协议和MAC帧协议的基本原理

文章目录 前言一、IP协议二、MAC帧协议 1.以太网2.以太网帧&#xff08;MAC帧&#xff09;格式报头3.基于协议讲解局域网转发的原理总结 前言 为什么经常将TCP/IP放在一起呢&#xff1f;这是因为IP层的核心工作就是通过IP地址来定位主机的&#xff0c;具有将一个数据报从A主机…

搭建B端产品帮助中心这两点很重要,从客户“帮助中心”出发思考!

一款优质的产品若想要用户体验良好&#xff0c;除了需要客服解答外&#xff0c;一个全面完善的产品帮助中心也是必不可少的&#xff0c;尤其是对于B端产品来说&#xff0c;其重要性自然不言而喻。 产品帮助中心 因为帮助中心是一个产品的重要用户自助服务模块&#xff0c;包括…

华为OD机试真题 Java 实现【跳格子游戏】【2023 B卷 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

进销存管理系统(小杨国贸)springboot采购仓库财务java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 进销存管理系统&#xff08;小杨国贸&#xff09;spri…

SpringBoot 整合Swagger2

一、Swagger简介 Swagger是一套开源工具和规范&#xff0c;用于设计、构建和文档化RESTful Web服务。它允许开发人员定义API的各个方面&#xff0c;并生成易于理解的API文档和交互式API探索界面。同时&#xff0c;Swagger还提供代码生成工具&#xff0c;可自动生成与API交互的客…

公文撰写规范:提升文档质量和专业性

1.拼写和语法检查&#xff1a;仔细检查文档中的拼写错误和语法错误。确保单词的正确拼写&#xff0c;并使用正确的语法结构和标点符号。 2.信息准确性&#xff1a;核对文档中的事实和数据&#xff0c;确保其准确性。确认所有日期、数字和引用的信息是否准确无误。 3.文档结构和…