第一次遇到区间dp的题
题目
class Solution {public int maxCoins(int[] nums) {int n = nums.length;int[] temp = new int[n+2];//创建一个辅助数组,并在首尾各添加1,方便处理边界情况temp[0] = 1;temp[n+1] = 1;for(int i=0; itemp[i+1] = nums[i];}int[][] dp = new int[n+2][n+2];for(int len=3; len<=n+2; len++){//len表示开区间长度for(int i=0; i<=n+2-len; i++){//i表示开区间左端点int res = 0; for(int k = i+1; k//k为开区间内的索引int left = dp[i][k];int right = dp[k][i+len-1];res = Math.max(res, left + temp[i]*temp[k]*temp[i+len-1] + right);}dp[i][i+len-1] = res;}}return dp[0][n+1];}
}
下一篇:操作系统之文件管理