多人过河问题C语言贪心算法,过河问题(贪心算法)(示例代码)
一、问题描述
在漆黑的夜里,甲乙丙丁共四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带 了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,四人所需要的时间分别是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语言贪心算法,过河问题(贪心算法)(示例代码)相关推荐
- python写算法求最短路径,Python实现迪杰斯特拉算法并生成最短路径的示例代码
def Dijkstra(network,s,d):#迪杰斯特拉算法算s-d的最短路径,并返回该路径和代价 print("Start Dijstra Path--") path=[ ...
- 【算法】学习笔记(0):算法初探(逻辑抽象 + 示例 + 代码实现)
什么是算法? 人生皆算法,算法的本质,是解决问题的方法,遇到问题,寻找答案,解决问题,是作为一个人,一生都在做的事情. 算法是人类思维的产物,是解决问题的方案,并且,它能够映射到计算机世界去实现,完成 ...
- C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)
C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...
- 机器学习算法精讲20篇(一)-k-means聚类算法应用案例(附示例代码)
前言 k-means算法是非监督聚类最常用的一种方法,因其算法简单和很好的适用于大样本数据,广泛应用于不同领域,本文详细总结了k-means聚类算法原理 . 以下是我为大家准备的几个精品专栏,喜欢的小 ...
- python手机代码识别数字_python实现kNN算法识别手写体数字的示例代码
1.总体概要 kNN算法已经在上一篇博客中说明.对于要处理手写体数字,需要处理的点主要包括: (1)图片的预处理:将png,jpg等格式的图片转换成文本数据,本博客的思想是,利用图片的rgb16进制编 ...
- c语言无视数据类型字符串存储,C语言基础-第二课-数据类型与运算符(示例代码)...
1 C语言中的数据类型 1.1 常量 常量就是在程序中不可变化的量,常量在定义的时候必须给一个初值. 1.1.1#define 定义一个宏常量 1.1.2const 定义一个const常量 1 ...
- 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 ...
- hill密码源代码c语言,古典密码(Hill加密算法)(示例代码)
"Hill的加密与解密" Hill加密是另一种多字母代替密码,与多表代替密码不同的是,Hill密码要求将明文分成同等规模的若干个分组(最后一个分组涉及到填充),每一个分组被整体的加 ...
- c语言变量加常量,C语言(二)---常量与变量(示例代码)
一.进制 1.1 二进制 1.1 简介 二进制数据是用0和1两个数码来表示的数.它的基数是2,进位规则是"逢二进1",借位规则是"借一当二".当前的计算机系统使 ...
- 江西理工大学c语言考试题库,江西理工大学C语言程序设计竞赛(初级组)(示例代码)...
JankTao相亲记 解法:排序 #include #include #include #include #include #include #include #include using names ...
最新文章
- 刷过一题之黑魔法师之门
- 通过oracle任务计划定期备份数据库
- android nfcDemo
- lua 字符串分割_Lua 分隔字符串,可以设置指定分隔符
- 根据变量值取得变量的参数名
- java实现加减乘除运算符随机生成十道题并判断对错_简单小程序——产生三十道小学四则运算题目...
- 1月Web服务器份额之争:仅Microsoft份额下降
- IDEA 2019.3新建项目找不到Maven的解决方法
- 一切皆有可能——在iPod上安装Linux
- 三维向量的一些运算技巧,如何计算坐标
- 芝麻小客服电脑版新增网址自带openid功能,聊天界面改版,新增通用设置
- Unity使用VS2019打开代码出现不兼容的解决方法
- Python3对Excel表格操作(写入、追加)
- 【js高级 Day3】深入理解原型的方式继承,借用构造函数继承,组合继承,拷贝继承
- 吴恩达深度学习笔记(40)-指数加权平均数优化算法
- w锋ndows用户组设置,第2章Wndows+Server+2008本地用户和组.ppt
- 印象笔记好还是有道云笔记好_有道云笔记和印象笔记哪个好?
- 一分钟教会你pdf如何转为PPT,简单易上手
- Mac苹果电脑清理软件哪个好及CleanMyMac X优势对比
- 爬虫获取天气预报并可视化