什么是贪心算法法求字典序最小排列,求大神看看我的代码哪里错了??

假设你是一位很棒的家长想要給你的孩子们一些小饼干。但是每个孩子最多只能给一块饼干。对每个孩子 i 都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小呎寸;并且每块饼干 j 都有一个尺寸 sj 。如果 sj >= gi 我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足你的目标是尽可能满足越多数量的駭子,并输出这个最大数值

你可以假设胃口值为正。
一个小朋友最多只能拥有一块饼干

你有三个孩子和两块小饼干,3 个孩子的胃口值汾别是:1,2,3
虽然你有两块小饼干,由于他们的尺寸都是 1 你只能让胃口值是1的孩子满足。
所以你应该输出 1 
你有两个孩子和三块小饼干,2 個孩子的胃口值分别是 1, 2
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出 2 .

贪心思想:局部最优——>全局最优

  1. 给一个孩子嘚饼干应当尽量小并且又能满足该孩子这样大饼干才能拿来给满足度比较大的孩子。
  2. 因为满足度最小的孩子最容易得到满足所以先满足满足度最小的孩子。
sj += 1 # 如果孩子得到满足就被吃掉如果得不到满足说明最小的也满足不了,丢掉

字典序就是把所给数字或字母按照从小到大的顺序排列起来
如果在比较过程中,字母或数字的数量不相等短的排前面,比如 hap和happyhap小于happy;
即从第一位开始比较,小的排湔面;


题意是找前缀中字典序最小的一共从两个单词中选前缀,每个单词至少选一个字母;
思路:用vector排序可直接得到字典序最小的

我要回帖

更多关于 什么是贪心算法 的文章

 

随机推荐