贪心思想就是保证每次操作都是局部最优的,并且最后得到的结果是全局最优的。不一定要证明最后就是最优的。
第一个问题
一块金条切成两半, 是需要花费和长度数值一样的铜板的。 比如长度为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。</