题目
Problem Description
在一个操场上一排地摆放着N堆石子。现要将石子有次序地合并成一堆。规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分。请设计一个程序,计算出将N堆石子合并成一堆的最小得分。
输入有多组数据,每组数据第1行为一个正整数N(2<=N<=100),以下N行,每行一个正整数,小于10000,分别表示第i堆石子的个数(1<=i<=N)。
Output
Sample Output
解题思路
状态: |
dp[i][j] 表示第i到第j堆石子合并成一堆,所需最小力气值 |
状态转移方程: |
dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j] + sum[j] - sum[i - 1]) 条件:i<=k<j |
求解: |
dp[1][n] |
解题代码