分析&回答
学校操场有N堆球需要把球挪到一块、力气使用为球的基数之和,如何将球挪到一块需要的力气最少?
int aa[] = getTMax(new int[]{1,2,2,4},0);
System.out.println(aa[0]);
private int[] getTMax(int a[], int index) {
if (index < a.length - 1) {
int x = a[index] + a[index + 1];
if (index == 0) {
a[0] = x;
} else {
a[0] = a[0] + x;
}
for (int i = index + 2; i < a.length; i++) {
if (a[i] < x) {
a[i - 1] = a[i];
if (i == a.length - 1) {
a[i] = x;
break;
}
} else {
a[i - 1] = x;
break;
}
}
return getTMax(a, ++index);
} else {
return a;
}
}
哈夫曼树--合堆算法
反思&扩展