算法整理04——贪心算法和优先级队列使用。

贪心思想就是保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。不一定要证明最后就是最优的。

第一个问题

一块金条切成两半, 是需要花费和长度数值一样的铜板的。 比如长度为20的金条, 不管切成长度多大的两半, 都要花费20个铜板。 一群人想整分整块金条, 怎么分最省铜板?例如,给定数组{10,20,30}, 代表一共三个人, 整块金条长度为10+20+30=60. 金条要分成10,20,30三个部分。 如果, 先把长度60的金条分成10和50, 花费60 再把长度50的金条分成20和30,花费50 一共花费110铜板。但是如果, 先把长度60的金条分成30和30, 花费60 再把长度30金条分成10和20, 花费30 一共花费90铜板。输入一个数组, 返回分割的最小代价。

贪心思想解题步骤:

1)把求解的问题分成若干个子问题;

2)判断子问题之间是否具备无后效性;

3)对每一子问题求解,得到子问题的局部最优解;

4)把子问题的局部最优解合成原来问题的一个解;

解决分金条问题:

1)把整个问题逆过程来,有许多小块,每次合并需要两个相加的cost,如10和20合并需要cost30。</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值