码迷,mamicode.com
首页 > 其他好文 > 详细

473. 火柴拼正方形

时间:2020-04-03 21:40:51      阅读:59      评论:0      收藏:0      [点我收藏+]

标签:迭代   rbegin   sum   div   amp   bsp   nbsp   col   for   

 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. 火柴拼正方形

标签:迭代   rbegin   sum   div   amp   bsp   nbsp   col   for   

原文地址:https://www.cnblogs.com/yuhong1103/p/12629004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!