class Solution {
public:
bool makesquare(vector<int>& nums) {
if(nums.empty()||nums.size()==0)
return false;
int length=0;
vector<int> sum(4,0);
for(int i=0;i<nums.size();i++)
length += nums[i];
if(length%4==0)
length /= 4;
else
return false;
return Dfs(nums,sum,0,length);
}
bool Dfs(vector<int>& nums,vector<int>& sum,int index,int length){
if(index==nums.size())
if(sum[0]==sum[1] && sum[1]==sum[2] && sum[2]==sum[3] && sum[3]==length)
return true;
else
return false;
for(int i=0;i<4;i++){
if(sum[i]+nums[index]>length)
continue;
sum[i] += nums[index];
if(Dfs(nums,sum,index+1,length))
return true;
else
sum[i] -= nums[index];
}
return false;
}
};
473. Matchsticks to Square
最新推荐文章于 2022-04-09 22:12:40 发布