使用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#解逻辑题:小王、小张、小赵三个人是好朋友,他们中间其中一个人下海经商,一个人考上了重点大学,一个人参军了。此外他们还知道以下条件:小赵的年龄比士兵的大;大学生的年龄比小张小;小王的年龄和大学生相关推荐

  1. 计算机笔试/面试常见逻辑题/智力题汇总

    说明:按种类汇总,难度不分先后,做了分级罗列,方便后续扩充,大家有比较有意思的题目可以在讨论区讨论. 下面有的题题解相对复杂的直接参考了网上的一些解答,而有的题解我认为并不好的也做了补充,欢迎大家批评 ...

  2. java面试为什么会有逻辑题,java面试逻辑题

    1.如何问问题? 有甲.乙两人,其中,甲只说假话,而不说真话:乙则是只说真话,不说假话.但是,他们两个人在回答别人的问题时,只通过点头与摇头来表示,不讲话.有一天,一个人面对两条路:A与B,其中一条路 ...

  3. 【逻辑题】有大、中、小三个水桶,容量分别为8、5、3升,初始只有大桶有8升水,不能另外从别的地方加水,如何准确得到一桶4升水

    文章目录 前言 一.题干 二.分析 前言 第一次在笔试的时候写到逻辑题,记录一下吧 感觉在笔试的时候都觉得:哈?这啥? 然后复盘的时候:哈?就这? 一.题干 有大.中.小三个水桶,容量分别为8.5.3 ...

  4. 找出第二小元素(算法导论第三版9.1-1题)

    找出第二小元素(算法导论第三版9.1-1题) 时间复杂度Θ(n) 比较次数n+⌈lgn⌉−2次 思路:将元素每次分成2部分,第一部分和第二部分元素成对比较.最终获得最小的元素,记录那些和最小元素比较后 ...

  5. 详解微信小程序页面间传递信息的三种方式

    详解微信小程序页面间传递信息的三种方式 在开发微信小程序的时候,经常会遇到在页面间传递信息的情况,有三种方法可以实现. 1. 使用数据缓存 将要存储的数据使用以下方法放入缓存 wx.setStorag ...

  6. 文字转语音小助手有哪些?分享三款,配音免费还易操作

    文字转语音小助手有哪些?分享三款,配音免费还易操作 文字转语音,其实就是将我们撰写好的文档转为语音进行播放,比如为短视频配音,其实也可以理解成为文字转语音.很多小伙伴会直接自己配音,但是对于不会配音的 ...

  7. 女生二本学护理专业和计算机专业哪个好,二本女生适合的6大“医学专业”,好就业,工作压力小,还很稳定...

    原标题:二本女生适合的6大"医学专业",好就业,工作压力小,还很稳定 为什么医学类专业争议那么大,但每年还是会有很多学生报考呢?甚至很多学生其实自己也知道医学专业不建议报考的人很多 ...

  8. 财富取决于极少的大高潮,幸福取决于较多的小高潮

    以下文章来源于孤独大脑 ,作者老喻在加 "一个人生命中最大的幸运,莫过于在他的人生中途,即在他年富力强的时候发现了自己的使命."茨威格,<人类群星闪耀时> 先说结论: ...

  9. 《变量》精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心

    <变量>书中的精髓:慢变量造就时代进步大趋势, 在慢变量中找到小趋势,能坚定我们前进的信心 心理学上,有一个著名的实验,叫"看不见的大猩猩".这个实验是这样的:参加测试 ...

最新文章

  1. 基于HttpModule扩展
  2. jQuery .attr() vs .prop()
  3. Mysql的存储过程修改表的数据:项目上一个小练习
  4. Windows下查看端口被占用问题和解决办法
  5. Centos 配置多个虚拟IP
  6. java 8 Lambda 表达式(副作用)
  7. 详解经典GPS辅助惯性导航论文 A GPS-aided Inertial Navigation System in Direct Configuration
  8. easyui 表头合并_JQuery EasyUI DataGrid动态合并(标题)单元) 一
  9. 所见即搜,3分钟教你搭建一个服装搜索系统!
  10. php的联查,PHP的多表联查
  11. MFC无法使用CDialogEx类
  12. python_day9 回调函数
  13. Microsoft Windows Sharepoint Services V3.0 安装图示
  14. 【锐捷交换机】清除密码
  15. ue4 计算向量夹角
  16. 从0到1哥斯拉项目反编译初步搭建
  17. 判断是否是正确的EMAIL格式
  18. 共阳和共阴数码管详细段码(带图)
  19. centernet代码阅读笔记
  20. 尚硅谷Linux运维讲解视频(2018.12)

热门文章

  1. “0xc000007b无法正常启动”我的解决方案
  2. 打开Dev c++出现could not open language file English.lng
  3. 2017乌鲁木齐区域赛D题Fence Building
  4. 01工作环境准备及数据分析建模理论基础
  5. docusign文档打不开_‎App Store 上的“DocuSign - 上传和签署文档”
  6. phpstorm连接远程服务器配置
  7. 使用 ARChon 运行时环境在 Ubuntu 上运行 Android 应用
  8. C语言实现十进制转二进制
  9. 给校园招聘中应聘嵌入式程序员的几点建议
  10. 大数据时代的差旅管理,看蜘蛛差旅如何精细化运作?