有n堆石子排成一排,其编号为1,2,3,…,n(n≤100)。每堆石子有一定的数量,例如有7堆石子,分别为13,7,8,16,21,4,18。
现在要将n堆石子归并成为一堆,归并的过程为每次只能将相邻的两堆石子堆成一堆,这样经过n-1次归并后成为一堆,如上面的7堆石子,可以有多种方法归并成一堆,其中的两种方法如下图所示。
则 (a)的归并代价为20+24+25+44+69+87=267
(b)的归并代价为15+37+22+28+59+87=248
可见不同的过程得到的归并代价是不一样的,现在请编程找出一种合理的方法,使归并代价最小。
第一行为一个整数n(1<n≤100),表示有n堆石子。
第二行为n堆石子的数量。
7 13 7 8 16 21 4 18
239
10 12 3 13 7 8 23 14 6 9 34
398
时间限制 | 1 秒 |
内存限制 | 128 MB |