编程题:石子合并简化版(构造最优解)
将 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.
答案:若无答案欢迎评论
请编写一个程序,读入堆数 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.
答案:若无答案欢迎评论