Advertisement
nikunjsoni

312

Jun 15th, 2021
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. class Solution {
  2. public:
  3.     int dp[502][502];
  4.     int maxCoins(vector<int>& nums) {
  5.         int n = nums.size();
  6.         memset(dp, 0, sizeof dp);
  7.         nums.insert(nums.begin(), 1);
  8.         nums.insert(nums.end(), 1);
  9.         for(int len=1; len<=n; len++){
  10.             for(int start=1; start<=n-len+1; start++){
  11.                 int end = start+len-1;
  12.                 int ans = INT_MIN;
  13.                 for(int mid=start; mid<=end; mid++){
  14.                     ans = max(ans, dp[start][mid-1]+dp[mid+1][end]+nums[mid]*nums[start-1]*nums[end+1]);
  15.                 }
  16.                 dp[start][end] = ans;
  17.             }
  18.         }
  19.         return dp[1][n];
  20.     }
  21. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement