使用C#解逻辑题:小王、小张、小赵三个人是好朋友,他们中间其中一个人下海经商,一个人考上了重点大学,一个人参军了。此外他们还知道以下条件:小赵的年龄比士兵的大;大学生的年龄比小张小;小王的年龄和大学生
使用C#解逻辑题
小王、小张、小赵三个人是好朋友,他们中间其中一个人下海经商,一个人考上了重点大学,一个人参军了。此外他们还知道以下条件:小赵的年龄比士兵的大;大学生的年龄比小张小;小王的年龄和大学生的年龄不一样。请推出这三个人中谁是商人?谁是大学生?谁是士兵?
在线工具
1.实现理念
- 我这个解法是
穷举算法
,即列举出所有组合结果,然后验证是否符合要求 - 这个题目中有两个关键点:1.每个人的身份【
士兵
、大学生
、商人
】2.年龄【最小
、中间
、最大
】 - 解题方式是,排列组合出所有符合要求的
身份
,年龄
组合,三层for
循环,身份用枚举Identity
来表示,年龄使用0~2
表示 - 找到符合要求的组合,就按照题目中已知条件对生成的组合生成判断语句,然后找到符合要求的那个组合将其输出
2.实现代码
static void Main(string[] args)
{var table = new Dictionary<Identity, Person>();for (var xw = new Person("小王"); xw.Move();){table[xw.Identity] = xw;for (var xz = new Person("小张"); xz.Move();){if (table.ContainsKey(xz.Identity)) continue;table[xz.Identity] = xz;for (var xzo = new Person("小赵"); xzo.Move();){if (table.ContainsKey(xzo.Identity)) continue;table[xzo.Identity] = xzo;if (//小赵的年龄比士兵的大;xzo.Age > table[Identity.Soldier].Age &&//大学生的年龄比小张小;xz.Age > table[Identity.Undergraduate].Age &&//小王的年龄和大学生的年龄不一样xw.Age != table[Identity.Undergraduate].Age){Console.WriteLine(xw);Console.WriteLine(xz);Console.WriteLine(xzo);}table.Remove(xzo.Identity);}table.Remove(xz.Identity);}table.Remove(xw.Identity);}
}
public class Person
{public Person(string name){Name = name;}public string Name { get; set; }public Identity Identity { get; set; }public int Age { get; set; } = -1;public bool Move(){if (Age < 2){Age++;return true;}if (Identity < Identity.Merchant){Age = 0;Identity++;return true;}return false;}public override string ToString(){return $"{Name}={ReadDescription(Identity)}[{Age}]";}static string ReadDescription(Identity value)=> typeof(Identity).GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false).Cast<DescriptionAttribute>().FirstOrDefault()?.Description;
}
public enum Identity
{/// <summary>/// 士兵/// </summary>[Description("士兵")] Soldier = 0,/// <summary>/// 大学生/// </summary>[Description("大学生")] Undergraduate = 1,/// <summary>/// 商人/// </summary>[Description("商人")] Merchant = 2,
}
输出结果
小王=士兵[0]
小张=商人[2]
小赵=大学生[1]
在线工具
使用C#解逻辑题:小王、小张、小赵三个人是好朋友,他们中间其中一个人下海经商,一个人考上了重点大学,一个人参军了。此外他们还知道以下条件:小赵的年龄比士兵的大;大学生的年龄比小张小;小王的年龄和大学生相关推荐
- 计算机笔试/面试常见逻辑题/智力题汇总
说明:按种类汇总,难度不分先后,做了分级罗列,方便后续扩充,大家有比较有意思的题目可以在讨论区讨论. 下面有的题题解相对复杂的直接参考了网上的一些解答,而有的题解我认为并不好的也做了补充,欢迎大家批评 ...
- java面试为什么会有逻辑题,java面试逻辑题
1.如何问问题? 有甲.乙两人,其中,甲只说假话,而不说真话:乙则是只说真话,不说假话.但是,他们两个人在回答别人的问题时,只通过点头与摇头来表示,不讲话.有一天,一个人面对两条路:A与B,其中一条路 ...
- 【逻辑题】有大、中、小三个水桶,容量分别为8、5、3升,初始只有大桶有8升水,不能另外从别的地方加水,如何准确得到一桶4升水
文章目录 前言 一.题干 二.分析 前言 第一次在笔试的时候写到逻辑题,记录一下吧 感觉在笔试的时候都觉得:哈?这啥? 然后复盘的时候:哈?就这? 一.题干 有大.中.小三个水桶,容量分别为8.5.3 ...
- 找出第二小元素(算法导论第三版9.1-1题)
找出第二小元素(算法导论第三版9.1-1题) 时间复杂度Θ(n) 比较次数n+⌈lgn⌉−2次 思路:将元素每次分成2部分,第一部分和第二部分元素成对比较.最终获得最小的元素,记录那些和最小元素比较后 ...
- 详解微信小程序页面间传递信息的三种方式
详解微信小程序页面间传递信息的三种方式 在开发微信小程序的时候,经常会遇到在页面间传递信息的情况,有三种方法可以实现. 1. 使用数据缓存 将要存储的数据使用以下方法放入缓存 wx.setStorag ...
- 文字转语音小助手有哪些?分享三款,配音免费还易操作
文字转语音小助手有哪些?分享三款,配音免费还易操作 文字转语音,其实就是将我们撰写好的文档转为语音进行播放,比如为短视频配音,其实也可以理解成为文字转语音.很多小伙伴会直接自己配音,但是对于不会配音的 ...
- 女生二本学护理专业和计算机专业哪个好,二本女生适合的6大“医学专业”,好就业,工作压力小,还很稳定...
原标题:二本女生适合的6大"医学专业",好就业,工作压力小,还很稳定 为什么医学类专业争议那么大,但每年还是会有很多学生报考呢?甚至很多学生其实自己也知道医学专业不建议报考的人很多 ...
- 财富取决于极少的大高潮,幸福取决于较多的小高潮
以下文章来源于孤独大脑 ,作者老喻在加 "一个人生命中最大的幸运,莫过于在他的人生中途,即在他年富力强的时候发现了自己的使命."茨威格,<人类群星闪耀时> 先说结论: ...
- 《变量》精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心
<变量>书中的精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心 心理学上,有一个著名的实验,叫"看不见的大猩猩".这个实验是这样的:参加测试 ...
最新文章
- 基于HttpModule扩展
- jQuery .attr() vs .prop()
- Mysql的存储过程修改表的数据:项目上一个小练习
- Windows下查看端口被占用问题和解决办法
- Centos 配置多个虚拟IP
- java 8 Lambda 表达式(副作用)
- 详解经典GPS辅助惯性导航论文 A GPS-aided Inertial Navigation System in Direct Configuration
- easyui 表头合并_JQuery EasyUI DataGrid动态合并(标题)单元) 一
- 所见即搜,3分钟教你搭建一个服装搜索系统!
- php的联查,PHP的多表联查
- MFC无法使用CDialogEx类
- python_day9 回调函数
- Microsoft Windows Sharepoint Services V3.0 安装图示
- 【锐捷交换机】清除密码
- ue4 计算向量夹角
- 从0到1哥斯拉项目反编译初步搭建
- 判断是否是正确的EMAIL格式
- 共阳和共阴数码管详细段码(带图)
- centernet代码阅读笔记
- 尚硅谷Linux运维讲解视频(2018.12)
热门文章
- “0xc000007b无法正常启动”我的解决方案
- 打开Dev c++出现could not open language file English.lng
- 2017乌鲁木齐区域赛D题Fence Building
- 01工作环境准备及数据分析建模理论基础
- docusign文档打不开_App Store 上的“DocuSign - 上传和签署文档”
- phpstorm连接远程服务器配置
- 使用 ARChon 运行时环境在 Ubuntu 上运行 Android 应用
- C语言实现十进制转二进制
- 给校园招聘中应聘嵌入式程序员的几点建议
- 大数据时代的差旅管理,看蜘蛛差旅如何精细化运作?