Skip to content

Commit

Permalink
Create 416.Partition-Equal-Subset-Sum_dfs_v2.cpp
Browse files Browse the repository at this point in the history
  • Loading branch information
wisdompeak authored Feb 10, 2022
1 parent 10a5112 commit 6e3ba1c
Showing 1 changed file with 32 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
class Solution {
unordered_set<int>visited;
public:
bool canPartition(vector<int>& nums)
{
int sum = accumulate(nums.begin(), nums.end(), 0);
if (sum%2!=0) return false;
return dfs(nums, sum/2, 0, 0);
}

bool dfs(vector<int>& nums, int targetSum, int i, int sum)
{
int hash = sum * 20005 + i;
if (visited.find(hash)!=visited.end())
return false;

if (sum== targetSum)
return true;

if (sum> targetSum)
return false;

if (i == nums.size())
return false;

if (dfs(nums, targetSum, i + 1, sum+ nums[i]) || dfs(nums, targetSum, i + 1, sum))
return true;

visited.insert(hash);
return false;
}
};

0 comments on commit 6e3ba1c

Please sign in to comment.