一开始想求所有结果为target的组合来着,但是所选元素不能重叠。用这个递归思想很简单,分成四个桶,每次把元素放在任意一个桶里面,最后如果四个桶相等就可以放进去,有一个地方可以剪枝,假如任意一个桶的元素和大于了target果断return。另一个优化的点在于,如果要求能不能也就是找到一个就可以的话,那么从大到小的找可以减少回溯的次数,否则会超时。学会了一个sort函数从大到小排序的新方法。sort(nums.rbegin(),nums.rend()); leetcode不能用sort(,,cmp)的那种方法不知道为什么。

#include<bits/stdc++.h>
using namespace std;
class Solution {
private:
vector<int>ans;
vector<vector<int>>res;
vector<bool>used;
bool cmp(int a, int b)
{
return a > b;
}
bool permutation(vector<int>nums, int index, int n,int a,int b,int c,int d)
{
if (a>n/||b>n/||c>n/||d>n/)
return false;
if (index==nums.size()&&a==b&&c==d&&b==c)
{
return true;
}
return permutation(nums, index + , n, a + nums[index], b, c, d) || permutation(nums, index + , n, a, b + nums[index], c, d) || permutation(nums, index + , n, a, b, c + nums[index], d) || permutation(nums, index + , n, a, b, c, d + nums[index]);
}
public:
bool makesquare(vector<int>& nums) {
if (nums.size() == )
return false;
int sum=;
int i;
sort(nums.rbegin(),nums.rend());
for (i = ; i < nums.size(); i++)
{
sum += nums[i];
}
if (sum % != ||nums[nums.size()-]>sum/)
return false;
return permutation(nums, , sum,,,,);
}
};

最新文章

  1. xamarin UWP ActivityIndicator
  2. android上下文菜单
  3. Cobbler批量安装Ubuntu/CentOS系统
  4. 手机号码js正则验证
  5. android studio只能全部提示设置
  6. iText导出pdf、word、图片
  7. JSP动作学习一
  8. 【ZOJ】【3329】One Person Game
  9. 关于Core Data的一些整理(五)
  10. apache 配置文件管理
  11. SQL 网文链接
  12. 04_Weblogic之受管服务器:配置受管服务器,启动受管服务器,解决因为强制关闭Weblogic之后导致启动有问题的问题,配置boot.properties
  13. SpringContextHolder 静态持有SpringContext的引用
  14. JavaScript的3种继承方式
  15. 关于我学XSS躺过的那些坑
  16. Java设计模式(10)代理模式(Proxy模式)
  17. MySQL Crash Course #15# Chapter 23. Working with Stored Procedures
  18. POJ 3320 Jessica&#39;s Reading Problem 尺取法/map
  19. POJ 1386 Play on Words(欧拉路)
  20. Spring Cloud学习入门路线方案

热门文章

  1. 依赖: nginx-common (= 1.14.0-0ubuntu1) 但是它将不会被安装
  2. PHP微信支付开发
  3. [No0000180]改善C#程序的建议8:避免锁定不恰当的同步对象
  4. SQL Fundamentals || Oracle SQL语言
  5. 【数论】Prime Time UVA - 10200 大素数 Miller Robin 模板
  6. 内存proc详解
  7. 用NFS挂载root出现:NFS: failed to create MNT RPC client, status=-101(-110)
  8. mongodb丢失数据的原因剖析 - 迎风飘来的专栏 - CSDN博客 https://blog.csdn.net/yibing548/article/details/50844310
  9. 如何实现浏览器向服务器伪造refer?
  10. 类中的函数带有self,不带self的区别