-->
当前位置:首页 > 题库 > 正文内容

编程题:石子合并简化版(构造最优解)

Luz3年前 (2021-12-31)题库1028
将 n 堆石子排放在一条直线上,现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该次合并的得分。

请编写一个程序,读入堆数 n 及每堆的石子数,并进行如下计算:

选择一种合并石子的方案,使得做 n−1 次合并得分总和最小。

### 输入格式:

输入第一行一个整数 n,表示有 n 堆石子(n<=200)。

第二行 n 个整数,表示每堆石子的数量(每堆石子<1000)。

### 输出格式:

输出第一行为合并得分总和最小值;

第二行为合并顺序。合并顺序由括号来分割,第i个数用Ai表示。

### 输入样例:



in
6
5 9 3 4 2 6


### 输出样例:


out
73
((A1A2)((A3A4)(A5A6)))

合并顺序由括号来分割,第i堆用Ai表示。

定义hij表示i到j合并成一堆。

则样例表示第1,2堆石子先合并成h12,第3,4堆石子先合并成h34,第5,6堆先合并成h56,然后把这h34,h56堆合并成堆h36;最后将h12,h36合并成h16.





答案:若无答案欢迎评论

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。