knakul853

Untitled

Jun 27th, 2020
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.78 KB | None | 0 0
  1. /**
  2. knakul853
  3. **/
  4. class Solution {
  5. public:
  6.     bool canPartition(vector<int>& nums) {
  7.        
  8.         int sm = accumulate(nums.begin(), nums.end(),0);
  9.         if(sm&1)return 0;
  10.         sm/=2;
  11.         int n = nums.size();
  12.        
  13.         vector<vector<int>>dp(n+1, vector<int>(sm+1, -1));
  14.        
  15.         return f(nums, 0, sm, dp);
  16.        
  17.     }
  18.    
  19.     bool f(vector<int>&nums, int id, int target, vector<vector<int>>&dp)
  20.     {
  21.         if(target == 0)
  22.             return true;
  23.         if(target<0 || id == nums.size())
  24.         {
  25.             return false;
  26.         }
  27.        
  28.         if(dp[id][target]!=-1)return dp[id][target];
  29.        
  30.         bool res = f(nums, id+1, target, dp) | f(nums, id+1, target - nums[id], dp);
  31.      return dp[id][target] = res;
  32.     }
  33. };
Add Comment
Please, Sign In to add comment