问题:5个人百米赛跑,跑完。

A说:E一定是第一名。

B说:我可能是第二名。

C说:A最慢。

D说:C不是最快的。

E说:D应该是第一名。

最后裁判说:E肯定不是第二第三名,只有1、2名猜对了。

问题:输出5人排名

解题思路:开始我是毫无头绪的,后面参照了爱因斯坦的思考题那样对问题进行抽象,然后建立数学模型。

问题抽象:用方法来抽象对话的判断,用数组建立排名模型。

代码:

package 谁是前锋;public class Main {public char[] rank = {'A','B','C','D','E'};public int count = 0;public static void main(String[] args) {Main ma = new Main();ma.initMain();}public void initMain(){permutation(rank,0,rank.length);}public void permutation(char[] rank,int m,int n){if( m < n - 1 ){permutation(rank,m+1,n);for(int i=m+1;i<n;i++){char t = rank[m];rank[m] = rank[i];rank[i] = t;permutation(rank,m+1,n);t = rank[m];rank[m] = rank[i];rank[i] = t;}}else{if( rank[1] == 'E' || rank[2] == 'E' ){//E肯定不是第三或者第二名return ;}if( judgeA(rank) && judgeB(rank) && judgeC(rank) && judgeD(rank) && judgeE(rank) ){print(rank);}}}public void print(char[] rank){for(int i=0;i<rank.length;i++){System.out.println("第"+(i+1)+"名是:"+rank[i]);}}public boolean judgeA(char[] rank){if( rank[1] == 'A' && rank[0] == 'E' ){//若A是1、2名,A说真话return true;}else if( rank[0] != 'A' && rank[1] != 'A' && rank[0] != 'E' ){//若A不是第1 、 2名,A说错了return true;}return false;}public boolean judgeB(char[] rank){//B猜对了if( rank[1] == 'B' ){return true;}else if( rank[0] != 'B' && rank[1] != 'B' ){//B猜错了return true;}return false;}public boolean judgeC(char[] rank){if( (rank[0] == 'C' || rank[1] == 'C')&& rank[4] == 'A' ){return true;}else if( rank[0] != 'C' && rank[1] != 'C' && rank[4] != 'A' ){return true;}return false;}public boolean judgeD(char[] rank){if( (rank[0] == 'D' || rank[1] == 'D')&& rank[0] != 'C' ){return true;}else if( rank[0] != 'D' && rank[1] != 'D' && rank[0] == 'C' ){return true;}return false;}public boolean judgeE(char[] rank){if( rank[1] == 'E' && rank[0] == 'D' ){return true;}else if( rank[1] != 'E' && rank[0] != 'D' ){return true;}return false;}
}

测试结果:

这题跟我的爱因斯坦的思考题那样,不过爱因斯坦的思考题更加复杂,需要用到两个枚举类。

爱因斯坦的思考题链接:http://blog.csdn.net/jjfly999/article/details/51120238

推理逻辑算法--------------问题抽象与数学建模相关推荐

  1. a*算法matlab代码_MATLAB数学建模算法的代码模板大全

    来喽,来喽! 上期的数模资源大家都领到了嘛 没领到的同学点击下方链接领哦 205G 数学建模备战资料大全免费送!!! 这期的数模代码模板也如约而至 废话不多说,直接上干货 内容大小接近120M,全是纯 ...

  2. 数学建模算法汇总(全网最全,含matlab案例代码)

    数学建模常用的算法分类 全国大学生数学建模竞赛中,常见的算法模型有以下30种: 最小二乘法 数值分析方法 图论算法 线性规划 整数规划 动态规划 贪心算法 分支定界法 蒙特卡洛方法 随机游走算法 遗传 ...

  3. 建模matlab的算法代码呀,数学建模算法打包

    数学建模十大算法程序详解(打包了) 十大算法 1说明.txt Floyd算法 floyd.txt 中国数学建模-数学工具-Floyd最短路算法的MATLAB程序.txt Newton插值.txt di ...

  4. Python小白的数学建模课-17.条件最短路径算法

    条件最短路径问题,指带有约束条件.限制条件的最短路径问题.例如: 顶点约束,包括必经点或禁止点的限制: 边的约束,包括必经路段.禁行路段和单向路段:无权路径长度的限制,如要求经过几步或不超过几步到达终 ...

  5. 数学建模–模拟退火算法

    文章目录 数学建模--智能算法 1.简介 模拟退火算法 1. 简介 2.数学建模中的模拟退火算法原理 3.模拟退火算法流程及应用 1.Metropolis采样算法 2. 退火过程实现算法 3.举个栗子 ...

  6. 数学建模——粒子群算法步骤及程序详解

    文章目录 前言 一.粒子群是什么? 二.粒子群算法的核心公式 1.速度 2.位置 3.核心参数的设置 惯性权重 学习因子 自动退出迭代循环 三.代码详解 总结 前言 优化算法一直都是数学建模比赛的热门 ...

  7. matlab中gad,10大经典算法matlab代码以及代码详解【数学建模、信号处理】

    [实例简介] 10大算法程序以及详细解释,包括模拟退火,禁忌搜索,遗传算法,神经网络.搜索算法. 图论. 遗传退火法.组合算法.免疫算法. 蒙特卡洛.灰色预测.动态规划等常用经典算法.是数学建模.信号 ...

  8. 大学生数学建模优秀论文发表

         大学生数学建模优秀论文篇1    浅谈大学生数学建模的意义 [摘 要]本文重点分析了数学建模对当前数学教育教学改革的现实意义,探讨了数学建模对学生应用数学能力的培养,阐述了计算机在数学建模竞 ...

  9. Python小白的数学建模课-15.图论的基本概念

    图论中所说的图,不是图形图像或地图,而是指由顶点和边所构成的图形结构. 图论不仅与拓扑学.计算机数据结构和算法密切相关,而且正在成为机器学习的关键技术. 本系列结合数学建模的应用需求,来介绍 Netw ...

最新文章

  1. Andrew Gelman、Aki Vehtari​ | 过去50年最重要的统计学思想是什么?
  2. 建立数据库时连接出错_PHP的福音!支持多数据库连接,高性能的开源MySQL连接池...
  3. 解决xcode升级插件失效
  4. python学习笔记(生成xml)
  5. mysql 5.6.34.rpm_离线安装mysql5.6及依赖_centos7离线安装mysql5.6.34
  6. Intellij 14快捷键
  7. html的标签和标记有啥区别,HTML 元素 b 和 strong 有什么区别?//(强调标签的理解)...
  8. react中嵌入网页_在网站中添加 React
  9. 435. 无重叠区间(JavaScript)
  10. python实用性自己设计_用Python设计PCR引物: Primer3-py 初识
  11. B站 - 黑客攻防 入门到入狱 [网络安全] -笔记
  12. 面试前的准备和注意事项(非常详细)
  13. IT运维存在问题及改进
  14. Unity配置混合现实应用程序
  15. ubuntu之使用wine微信之无法发送图片
  16. WIN2008R2修改远程桌面端口(不重启系统)
  17. 2017校园招聘 携程编程题
  18. 2021年Android面试心得,系列教学
  19. PSO粒子群算法微电网优化调度(微电网孤岛运行优化调度)matlab程序
  20. RGB值和RGBA值

热门文章

  1. 计算机评课用语不足与建议,评课用语不足与建议 [听课评语优缺点]
  2. Revit 2017 编程需要用Visual Studio2015 +.NET Framework 4.52
  3. VSCode - setting.json配置 - Prettier、Vetur格式化和ESLint检查
  4. SIGCOMM Conference Slide
  5. SVN的目录结构介绍和版本管理方式
  6. pip 安装 pyautogui 失败
  7. 海康威视摄像机通过SDK实现自动拍照(二)
  8. python随机森林变量重要性_Python中随机森林的实现与解释
  9. Linux下常用软件压缩包方式安装
  10. bzoj 4044: [Cerc2014] Virus synthesis 回文树