classSolution{publicintmaxCoins(int[]nums){if(nums.length==0){return0;}if(nums.length==1){returnnums[0];}/* Initial coins[] */intlength=nums.length+2;int[]coins=newint[length];coins[0]=1;for(inti=1,max_len=length-1;i<max_len;i++){coins[i]=nums[i-1];}coins[length-1]=1;int[][]dp=newint[length][length];/* Initialized */intl;// left
intr;// right
for(intlen=2;len<length;len++){for(l=0;l+len<length;l++){r=l+len;for(intk=l+1;k<r;k++){dp[l][r]=Math.max(dp[l][r],dp[l][k]+coins[l]*coins[k]*coins[r]+dp[k][r]);}}}returndp[0][length-1];}}