473. 火柴拼正方形

Posted yuhong1103

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了473. 火柴拼正方形相关的知识,希望对你有一定的参考价值。

 1 class Solution 
 2 {
 3 public:
 4     bool makesquare(vector<int>& nums) 
 5     {
 6         if(nums.size()<4) return false;
 7         int sum=0;
 8         for(int i=0;i<nums.size();i++) sum+=nums[i];
 9         if(sum%4 != 0) return false;
10         sort(nums.rbegin(),nums.rend());//最神奇的一个操作(rebgin,rend)反向迭代器
11         //排序的原因是为了使大的数字优先放 会减少排序次数
12         int bucket[4]={0};
13         return generate(0,sum/4,nums,bucket);
14     }
15     bool generate(int i,int target,vector<int>& nums,int bucket[])
16     {
17         if(i == nums.size()) return bucket[0] == target && bucket[1] == target && bucket[2] == target && bucket[3] == target;
18 
19         for(int j = 0;j < 4;j ++)
20         {
21             //如果某个边长大于target就不放了
22             if(bucket[j] + nums[i] > target) continue;
23             
24             bucket[j] += nums[i];
25             if(generate(i + 1,target,nums,bucket)) return true;
26             bucket[j] -= nums[i];
27         }
28         return false;
29     }
30 };

 

以上是关于473. 火柴拼正方形的主要内容,如果未能解决你的问题,请参考以下文章

473. 火柴拼正方形

473. 火柴拼正方形

leetcode-473 火柴拼正方形

Leetcode刷题Python473. 火柴拼正方形

力扣中473 火柴拼正方形 题解看不懂 没写出来++*

LeetCode 473. 火柴拼正方形