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;
}

}

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