石子合并
区间DP的状态表示一般是一个区间
f [ i , j ] 为 从 i 到 j 的区间合并成一个的代价,其中每次是把两个相邻区间进行合并,
那么i~j合并成一个区间那就是[i, k]和[k+1, j]合并成一个区间,还得把k遍历一遍
for(int i = 1; i <= n; i ++) s[i] += s[i-1];
for(int len = 2; len <= n; len ++){
for(int l = 1; l + len - 1 <= n; l ++){
int r = l + len - 1;
dp[l][r] = 1e9;
for(int k = l; k < r; k ++){
dp[l][r] = min(dp[l][r], dp[l][k] + dp[k + 1][r] + s[r] - s[l-1]);
}
}
}
cout << dp[1][n];