当前位置: 首页 > news >正文

你知道猜凶手和猜名次如何利用编程实现吗?

我们先来看看猜名次的题目:

5位运动员参加了10米台跳水比赛,有人让他们预测比赛结果:

A选手说:B第二,我第三;
B选手说:我第二,E第四;
C选手说:我第一,D第二;
D选手说:C最后,我第三;
E选手说:我第四,A第一;
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次。

我们如何将一个人说话的真假用代码实现?很显然我们可以通过判断的真假来判断人说话的真假:

用a举例:

(b==2)+(a==3)==1

然后我们再通过暴力列举出所有人的所有名次,在通过判断每个人的判断真假来确定名次。

代码是:

int main()
{
    int a, b, c, d, e;
    for (a = 1; a <= 5; a++)
    {
        for (b = 1; b <= 5; b++)
        {
            for (c = 1; c <= 5; c++)
            {
                for (d = 1; d <= 5; d++)
                {
                    for (e = 1; e <= 5; e++)
                    {
                        if (((b == 2) + (a == 3) == 1) &&
                            ((b == 2) + (e == 4) == 1) &&
                            ((c == 1) + (d == 2) == 1) &&
                            ((c == 5) + (d == 3) == 1) &&
                            ((e == 4) + (a == 1) == 1)&&a*b*c*d*e==120)
                            printf("a=%d b=%d c=%d d=%d e=%d\n", a, b, c, d, e);

                    }
                }
            }
        }
    }
}

注意:这里我们得到的结果可能会有重复的名次,所以我们要通过判断确定他们是不同的名次。

我们在来看看猜凶手的题目:

日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯的一个。

以下为4个嫌疑犯的供词:

A说:不是我。
B说:是C。
C说:是D。
D说:C在胡说
已知3个人说了真话,1个人说的是假话。

现在请根据这些信息,写一个程序来确定到底谁是凶手。

和第一题一样,通过暴力列举所有情况,在通过判断所有情况在话语中的情况判断谁是凶手,代码实现:

int main()
{
    char killer = 'a';
    for (killer = 'a'; killer <= 'd'; killer++)
    {
        if ((killer != 'a') + (killer == 'c') + (killer == 'd') + (killer != 'd') == 3)
        {
            printf("凶手是%c", killer);
        }
    }
}

总结:

这些题目其实不是很难,他考验了我们将现实问题转化为代码问题的能力,我们要学会转化这些问题,才能真正的实现面向现实编程。

相关文章:

  • SpringBoot动态生成接口
  • 一图读懂mybatis 查询接口的源码流程
  • Linux中的vim最小集、指令集及其配置
  • 【胖虎的逆向之路】02——Android整体加壳原理详解实现
  • 【学Vue就跟玩一样】组件-非单文件组件的使用
  • 数据结构进阶 AVL树
  • 正确的清理内存方式,才能让你的空间更加充裕
  • 关于sql注入这一篇就够了(适合入门)
  • 【Linux学习】进程控制
  • Springboot中如何优雅的写好controller层代码
  • Elasticsearch:Go 客户端简介 - 8.x
  • Vue--》详解状态管理工具——Vuex
  • 基于Android的物业管理app
  • C++STL——list类与模拟实现
  • 基于java springboot+mybatis学生学科竞赛管理管理系统设计和实现
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 2017-08-04 前端日报
  • 5、React组件事件详解
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • cookie和session
  • git 常用命令
  • Hibernate【inverse和cascade属性】知识要点
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Next.js之基础概念(二)
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Spring-boot 启动时碰到的错误
  • Vue.js-Day01
  • 阿里云购买磁盘后挂载
  • 爱情 北京女病人
  • 产品三维模型在线预览
  • 服务器从安装到部署全过程(二)
  • 高度不固定时垂直居中
  • 聊聊redis的数据结构的应用
  • 巧用 TypeScript (一)
  • 山寨一个 Promise
  • 小程序开发中的那些坑
  • 鱼骨图 - 如何绘制?
  • 字符串匹配基础上
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 如何正确理解,内页权重高于首页?
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • (1)Nginx简介和安装教程
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (Python第六天)文件处理
  • (二)linux使用docker容器运行mysql
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .bat批处理(三):变量声明、设置、拼接、截取