贪心策略

一种递推算法,用局部最优解来推导全局最优解,不断选取当前最优策略,最终找到最优解。当前最优未必是整体最优。找最优解是贪心,找解的数量是递归

1.硬币问题

【问题描述】有1元,5元,10元,50元,100元,500元的硬币各c1, c5, c10, c50, c100, c500枚,现在要用这些硬币来支付A元,最少需要多少枚。假定本题至少存在一种支付方案。
输入:
第一行有六个数字,分别代表从小到大6种面值的硬币的个数
第二行为A,代表需支付的A元

【算法】 先使用最大面值的

【代码】

2.快速渡河问题

【问题描述】按速度最慢的那个时间算,乘2个人,一个人乘船回来

【算法】若是问有几种组合

 

【代码】

3.区间调度问题

【问题描述】有n项工作,每项工作分别在si时间开始,在ti时间结束。对于每项工作,你都可以选择参与与否。如果选择了参与,那么自始至终都必须全程参与。此外,参与工作的时间段不能重复(即使是开始的瞬问和结束的瞬间的重叠也是不允许的)。你的目标是参与尽多的工作,那么最多能参与多少项工作呢?
输入:
第一行:n
第二行:m个整数空格隔开,代表n个工作的开始时间
第三行:n个整数空格隔开,代表n个工作的结束时间

【算法】按结束时间排序,注意题目没说有序,所以要先排序,选择结束最早的

4.区间选点

5.区间覆盖

选择s<=start中最长的,子问题最优=>全问题最优

6.字典序最小问题

【问题描述】给定长为N的字符串S,构造一个字符串T, 长度也为N。起初,T是一个空串,随后反复进行下列任意操作
1.从S的头部删除一个字符, 加到T的尾部
2.从S的尾部删除一个字符, 加到T的尾部
目标是最后生成的字符串T的字典序尽可能小

【算法】

字符串在java中用compareTo,而不是<>

7. 背包相关问题

【问题】有n个物体,第i个物体的重量为wi,价值为vi。在总重量不超过C的情况下让总价值尽量高。每一个物体都可以只取走一部分, 价值和重量按比例计算。求最大总价值
注意:每个物体可以只拿-部分, 因此- -定可以让总重量恰好为C.

【算法】取单位重量价值最大的

8.乘船问题

【问题描述】 有n个人,第i个人重最为wi。每艘船的最大数重品均为C,且最多只能采两个人。用最少的船装载所有人。
贪心策略:考虑最轻的人i,如果每个人都无法和他-起坐船(重 量和超过C,则唯-的方案是每个人坐- 艘否则,他应该选择能和他-起坐船的人中最重的一个j
求需船的数量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值