for (int len = 1; len < n; len++) // 区间长度,由小区间开始dp,因为最先能确定的一定是最小的区间 for (int l = 1, r = len + 1; l <= n && r <= n; l++, r++) { int ans = INF; // int ans=0; 取决于要求的是最大值还是最小值 for (int k = l; k < r; k++) ans = max(ans, dp[l][k] + dp[k + 1][r] + 对这俩区间操作得到的结果); dp[l][r] = ans; }