问题描述 这个问题在我们的日常生活中就更加普遍了。假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0, c1, c2, c3, c4, c5, c6张。现在要用这些钱来支付K元,至少要用多少张纸币?用贪心算法的思想,很显然,每一步尽可能用面值大的纸币即可。在日常生活中我们自然而然也是这么做的。在程序中已经事先将Value按照从小到大的顺序排好。 代码 package TanXin;/*钱币找零问题 */ /* 这个问题在我们的日常生活中就更加普遍了...
1、题目描述定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 你的目标是使用最少的跳跃次数到达数组的最后一个位置。2、问题分析这也是一道跳跃问题,但是这道题的目的是让我们计算跳到最后一个位置的最小跳跃次数。我们一直的是这个数组一定能从第一个位置跳到最后一个位置,但是不同的跳跃情况跳跃的次数是不一样的,怎样能保证跳跃的次数是最少的呢?跳的次数最少其实就...
1、射击气球 2、分糖果问题 3、摇摆序列问题 4、移除K个数字 5、跳跃游戏——a 6、跳跃游戏——b
区间划分问题Interval Partitioning 问题描述: Lecture j starts at sj and finishes at fj Goal:find minimum number of classrooms to schedule all lectures so that no two occur at the same time in the same room. 下面给出一个例子
Ckp的约会(xmu oj)贪心算法问题 by C++题目描述题目分析代码截图: 题目描述Ckp的约会 描述 今天Ckp打算去约会。大家都知道Ckp是超级大帅哥,所以和他约会的MM也超级多,她们每个人都和Ckp订了一个约会时间。但是今天Ckp刚打算出门的时候才发现,某几个MM的约会时间有冲突。由于Ckp不会分身,还不能和多个MM同时约会,他只能忍痛割爱拒绝掉某些MM。但是Ckp这个花心大萝卜还是不死心,他想知道,他最多可以和多少个MM约会。输入 输...
--------------------- 作者:LoisLuo666 来源:CSDN 原文:https://blog.csdn.net/LoisLuo666/article/details/79560332 贪心算法:贪心法顾名思义就是不断贪心的选取当前最优策略的计算方法。 下面介绍几种贪心问题 问题一:货币选择问题 问题描述:分别有1,5,10,50,100元,分别有5,2,2,3,5张纸币。问若要支付k元,则需要多少张纸币? 问题分析: 我们只需要遵循“优先使用面值大的硬币”即可。 1.尽可能多的使用100元(即最大的...
最近做到了如何用贪心算法求解均分纸牌问题,在这里讲一下我的思路, 0)假设纸牌数量可以是负数 1)对于最左边的纸牌,为了使它的纸牌数达到平均,只要还没有达到平均无论其余子情况如何移动,一定有一步是把自己多余的纸牌移动到右边,或者是从右边移动进来自己差了多少张纸牌 2)第一堆牌只有和右边进行交互是合法的,步骤1是必须的 3)处理好第一堆后,其余操作一定不涉及第一堆,否则答案更劣(经过前一堆是没有意义的) 4)无...
找零问题:假设商店老板需要找零n元钱,钱币的面额有:100元、50元、20元、5元、1元,如何找零使得所需钱币的数量最少?# greedy algorithmmoney = [100,50,20,5,1]def change_money(x):change = [0,0,0,0,0]for i,m in enumerate(money):change[i] = x // money[i]x = x % money[i]if x > 0:print("还剩%s" % x)return changeprint(change_money(356.2))
贪心算法的所谓“贪心”,就是将问题转化为多个小问题,并求得这多个子问题的最优解,最终解的最优解便是这多个小问题最优解的串联。 在做贪心算法时,有两点需要考虑:1,如何将问题分解为一个个子问题。2,寻求所有子问题的最优解。 这里先举两个例子: 一, [1 , 5] ,[2 , 3],[4 , 5],[7 , 8],[4 , 8],[2 , 7],[2 , 6] 为一间教室中的课表时间,[上课时间,下课时间],问该教室最多可以安排几节课 子问题:下课越早,可...
最优子结构:对比DFS,不是进行各种可选支路的试探,而是当下就可用某种策略确定选择,无需考虑未来(未来情况的演变也影响不了当下的选择)。只要一直这么选下去,就能得出最终的解,每一步都是当下(子问题)的最优解,那么最终得出的结果就是问题的最优解,这叫做最优子结构。更书面的说法:如果问题的一个最优解中包含了子问题的最优解,则该问题具有最优子结构,具备这类结构的问题,可以用局部最优解来推导全局最优解,可以认...
问题: 在漆黑的夜里,N位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,N个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥的话,N人所需要的时间已知;而如果两人同时过桥,所需要的时间就是走得比较慢的那个人单独行动时所需的时间。问题是,如何设计一个方案,让这N人尽快过桥。 输入: 第一行是一个整数T(1<=T<=20)表示测试数据的组数...
有n个完成时间不同的独立任务,m台处理机,n个任务在任意一台处理机上完成及为完成,一台处理机在同一时间只能处理一个任务,要求给定任务时间和处理机数量时,完成所有任务的最短时间。 多机调度问题是一个NP完全问题,目前没有有效解法,可以使用贪心算法获得近似最优解的答案。当n<=m时,所有任务可以单独占有一台处理机,所以任务完成时间最长的任务就决定了所有任务完成的最短时间;当n>m时,将所有任务按从大到小顺序...
仅做学习记录,具体可参照 https://www.cnblogs.com/xsyfl/p/6938642.html 写的很好。 所谓贪心算法就是 在每一次的求解中 ,都使用最佳操作,这样所有步骤的求解 组合起来就是 全局的最优解。。 比如一个会议室如何最大利用。找零。 假设有n个会议要使用会议室,假设每个会议都有开始时间Sn 和 结束时间 Fn . 必须满足其上一个会议的结束时间小于改会议的开始时间。 我们假定一个会议越早结束,那么后面我越能安排更多的会议...
现有一个载重为W的货船,集装箱i个,重量分别为wi,在不考虑体积的情况下,要求装载的数量最多。 这是一个简单的最优装载问题,类似01背包问题,但考虑的不是价值而是数量,所以每次选取剩余集装箱中重量最轻的就可以,通过贪心算法就能得到最优解。package test;import java.util.ArrayList; import java.util.Collections; import java.util.List;/** * Created by saishangmingzhu on 2018/11/30. */ public class Bin...
算法描述币种统计单位给每一位员工发工资(精确到元),为了保证不临时换零钱,使得每个员工取款的张数最少,在取工资前统计所有员工所需要的各种票面的张数(约定票种为100,50,20,10,5,2,1元),并验证币种统计是否正确算法思路算法描述其实是省略了要求,用户肯定是要输入员工数以及各位员工的工资 定义:n位员工,G[n]对应了第n员工的工资 a数组存放100元到1元的面值,a[0]=100,a[1]=50... b数组对应每个面值的张数,b[0]对应10...