码迷,mamicode.com
首页 > 其他好文 > 详细

分割金条的最小代价

时间:2020-06-07 16:42:36      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:stat   代码   ++   个数   public   指正   money   最小   需要   


import java.util.PriorityQueue;

/**
* 一块金条切成俩半,需要花费和金条长度数值相等的铜板。
* 比如{10,20,30}代表金条长度60,三个人分,如果先分成10,50,花费60铜板,再把50分成20,30,花费50铜板,总消费110铜板;
* 如果先分成30,30,花费60铜板,再把30分成20,10,花费30铜板,总消费90铜板。
* 输入一个数组,返回分割的最小代价
*/
public class LessMoneySplitGold {

public static int lessMoney2(int[] arr) {
PriorityQueue<Integer> pQ = new PriorityQueue<>();
for (int i = 0; i < arr.length; i++) {
pQ.add(arr[i]);
}
int sum = 0;
int cur = 0;
while (pQ.size() > 1) {
cur = pQ.poll() + pQ.poll();
sum += cur;
pQ.add(cur);
}
return sum;
}

}

/* 如有意见或建议,欢迎评论区留言;如发现代码有误,欢迎批评指正 */

分割金条的最小代价

标签:stat   代码   ++   个数   public   指正   money   最小   需要   

原文地址:https://www.cnblogs.com/laydown/p/13060901.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!