ann8497

burst the balloons Samsung

Aug 16th, 2019
1,484
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.75 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int dp[100][100];
  5. int solve(int *a , int n){
  6.    
  7.    for(int len = 1; len<=n; len++){
  8.        for(int left = 1; left<=n-len+1; left++){
  9.        int right = left + len - 1;
  10.        for(int k = left; k<=right; k++){
  11.            
  12.            int temp =  dp[left][k-1] + dp[k+1][right];
  13.            if(left == 1 && right == n)temp += a[k];
  14.            else temp += a[left-1]*a[right+1];
  15.            dp[left][right] = max(dp[left][right],temp);
  16.  
  17.        }
  18.        }
  19.    }
  20.    return dp[1][n];
  21. }
  22.  
  23. int main(){
  24.    
  25.     int n; cin>>n;
  26.     int a[n+2];
  27.     a[0] = 1;
  28.     a[n+1] = 1;
  29.     for(int i =1; i<=n; i++)cin>>a[i];
  30.     a[n+1] = 1;
  31.     memset(dp, 0, sizeof(dp));
  32.     cout<<solve(a,n)<<endl;
  33.     return 0;
  34. }
Comments
Add Comment
Please, Sign In to add comment