Skip to content

Commit 06a9628

Browse files
authored
Create partitionequalsubsetsum.cpp
1 parent c879dae commit 06a9628

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
class Solution {
2+
public:
3+
bool partition(vector<int>&nums,int sum,int n,vector<vector<int>>&dp){
4+
if(sum==0){
5+
return true;
6+
}
7+
if(n==0){
8+
return false;
9+
}
10+
if(dp[n][sum]!=-1){
11+
return dp[n][sum];
12+
}
13+
if(nums[n-1]<=sum){
14+
dp[n][sum]=partition(nums,sum-nums[n-1],n-1,dp)||partition(nums,sum,n-1,dp);
15+
}
16+
else{
17+
dp[n][sum]=partition(nums,sum,n-1,dp);
18+
}
19+
return dp[n][sum];
20+
}
21+
bool canPartition(vector<int>& nums) {
22+
int sum=0,i,j,n=nums.size();
23+
for(i=0;i<n;i++){
24+
sum+=nums[i];
25+
}
26+
if(sum%2==1){
27+
return false;
28+
}
29+
sum/=2;
30+
vector<vector<int>>dp(n+1);
31+
for(i=0;i<=n;i++){
32+
for(j=0;j<=sum;j++){
33+
dp[i].push_back(-1);
34+
}
35+
}
36+
return partition(nums,sum,n,dp);
37+
}
38+
};

0 commit comments

Comments
 (0)