一、问题描述

在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带 了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是1、2、5、8分钟;而如果两人同时过桥,所需要的时间就是走 得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这四人尽快过桥。

二、问题答案

这个问题本身并不太难,即使用简单的枚举法逐一尝试也能找到正确答案。

两人过桥后,需要把手电筒送来,因此最容易想到的是让那个最快的人担任来回送电筒的人。因此,这第一种办法是:先让甲乙过去(2分钟),甲回来(1分钟),甲丙过去(5分钟),甲回来(1分钟),甲丁再过去(8分钟),总共需要17分钟就可以让四个人都过去。

而正确答案是第二种方法:先让甲乙过去(2分钟),甲回来(1分钟),丙丁过去(8分钟),乙回来(2分钟),甲乙再过去(2分钟),总共需要15分钟就可以让四个人都过去。

这里的一个关键点,是让两个最慢的人同时过桥。

三、简单扩展

如果把四人所需要的时间,改变一下分别,是1、4、5、8分钟。

第一种方法:先甲乙过去(4分钟),甲回来(1分钟),甲丙过去(5分钟),甲回来(1分钟),甲丁再过去(8分钟),总共需要19分钟就可以让四个人都过去。

第二种方法:先让甲乙过去(4分钟),甲回来(1分钟),丙丁过去(8分钟)&

多人过河问题C语言贪心算法,过河问题(贪心算法)(示例代码)相关推荐

  1. python写算法求最短路径,Python实现迪杰斯特拉算法并生成最短路径的示例代码

    def Dijkstra(network,s,d):#迪杰斯特拉算法算s-d的最短路径,并返回该路径和代价 print("Start Dijstra Path--") path=[ ...

  2. 【算法】学习笔记(0):算法初探(逻辑抽象 + 示例 + 代码实现)

    什么是算法? 人生皆算法,算法的本质,是解决问题的方法,遇到问题,寻找答案,解决问题,是作为一个人,一生都在做的事情. 算法是人类思维的产物,是解决问题的方案,并且,它能够映射到计算机世界去实现,完成 ...

  3. C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  4. 机器学习算法精讲20篇(一)-k-means聚类算法应用案例(附示例代码)

    前言 k-means算法是非监督聚类最常用的一种方法,因其算法简单和很好的适用于大样本数据,广泛应用于不同领域,本文详细总结了k-means聚类算法原理 . 以下是我为大家准备的几个精品专栏,喜欢的小 ...

  5. python手机代码识别数字_python实现kNN算法识别手写体数字的示例代码

    1.总体概要 kNN算法已经在上一篇博客中说明.对于要处理手写体数字,需要处理的点主要包括: (1)图片的预处理:将png,jpg等格式的图片转换成文本数据,本博客的思想是,利用图片的rgb16进制编 ...

  6. c语言无视数据类型字符串存储,C语言基础-第二课-数据类型与运算符(示例代码)...

    1   C语言中的数据类型 1.1   常量 常量就是在程序中不可变化的量,常量在定义的时候必须给一个初值. 1.1.1#define 定义一个宏常量 1.1.2const 定义一个const常量 1 ...

  7. c语言数位重排为最大数,18.12.09-C语言练习:黑洞数 / Kaprekar问题(示例代码)

    题目: 程序: 1 #include 2 3 int main(void) {4 intn, a, b, c, t, A, B;5 printf("输入一个三位数整数:");6 s ...

  8. hill密码源代码c语言,古典密码(Hill加密算法)(示例代码)

    "Hill的加密与解密" Hill加密是另一种多字母代替密码,与多表代替密码不同的是,Hill密码要求将明文分成同等规模的若干个分组(最后一个分组涉及到填充),每一个分组被整体的加 ...

  9. c语言变量加常量,C语言(二)---常量与变量(示例代码)

    一.进制 1.1 二进制 1.1 简介 二进制数据是用0和1两个数码来表示的数.它的基数是2,进位规则是"逢二进1",借位规则是"借一当二".当前的计算机系统使 ...

  10. 江西理工大学c语言考试题库,江西理工大学C语言程序设计竞赛(初级组)(示例代码)...

    JankTao相亲记 解法:排序 #include #include #include #include #include #include #include #include using names ...

最新文章

  1. 刷过一题之黑魔法师之门
  2. 通过oracle任务计划定期备份数据库
  3. android nfcDemo
  4. lua 字符串分割_Lua 分隔字符串,可以设置指定分隔符
  5. 根据变量值取得变量的参数名
  6. java实现加减乘除运算符随机生成十道题并判断对错_简单小程序——产生三十道小学四则运算题目...
  7. 1月Web服务器份额之争:仅Microsoft份额下降
  8. IDEA 2019.3新建项目找不到Maven的解决方法
  9. 一切皆有可能——在iPod上安装Linux
  10. 三维向量的一些运算技巧,如何计算坐标
  11. 芝麻小客服电脑版新增网址自带openid功能,聊天界面改版,新增通用设置
  12. Unity使用VS2019打开代码出现不兼容的解决方法
  13. Python3对Excel表格操作(写入、追加)
  14. 【js高级 Day3】深入理解原型的方式继承,借用构造函数继承,组合继承,拷贝继承
  15. 吴恩达深度学习笔记(40)-指数加权平均数优化算法
  16. w锋ndows用户组设置,第2章Wndows+Server+2008本地用户和组.ppt
  17. 印象笔记好还是有道云笔记好_有道云笔记和印象笔记哪个好?
  18. 一分钟教会你pdf如何转为PPT,简单易上手
  19. Mac苹果电脑清理软件哪个好及CleanMyMac X优势对比
  20. 爬虫获取天气预报并可视化

热门文章

  1. Servlet入门——1、servlet基础
  2. 计算机实验心得资源管理器,关于windows7基本操作的实验总结.docx
  3. 数字图像处理-图像处理基础
  4. SVG停车场地图与停车场导航
  5. 往事如烟可否随风去?
  6. StretchDIBits()函数
  7. 利用遗传算法进行智能健康分析:让健康数据更科学、更可靠
  8. 【《自动控制原理(田玉平)》|课本知识点整理(三)】第 5 章 控制系统的时域运动分析
  9. linux下安装unity web player的方法
  10. win7安装提示“缺少所需的CD/DVD驱动器设备驱动程序”