https://oj.leetcode.com/problems/combination-sum-ii/

一列数,每个数只能用一次或者不用,给出和为target的组合。

递归写的深搜,使用了编程技巧,引用。因为递归在本意上是不需要这个引用的,因为它额外的改了调用参数,所以,又有相应的 pop_back()

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std; class Solution {
public:
vector<vector<int> > combinationSum2(vector<int> &num, int target){
vector<vector<int> > ans;
if(num.size()==)
return ans; sort(num.begin(),num.end()); if(num[]>target)
return ans; //remove the elements greater than target
int len = num.size();
while(len>= && num[len-] > target)
len--;
num.resize(len); vector<int> ansPiece;
combinationSum(num,ans,target,,ansPiece); //remove duplicates
sort(ans.begin(),ans.end());
ans.erase(unique(ans.begin(),ans.end()),ans.end()); return ans;
}
void combinationSum(vector<int> & num,vector<vector<int> > &ans,int target,int pivot,vector<int> &ansPiece)
{
if(target == )
{
ans.push_back(ansPiece);
return;
}
if( target < ||pivot == num.size())
return; combinationSum(num,ans,target,pivot+,ansPiece); ansPiece.push_back(num[pivot]);
combinationSum(num,ans,target - num[pivot],pivot+,ansPiece);
ansPiece.pop_back();
}
};
int main()
{
vector<int> num;
num.push_back();
num.push_back();
num.push_back();
num.push_back();
num.push_back();
num.push_back();
num.push_back(); class Solution mys;
mys.combinationSum2(num,);
}

最新文章

  1. vim+vundle配置
  2. ASP.NET MVC使用jQuery实现Autocomplete
  3. 《锋利的jQruery》读书笔记
  4. Fidder--实现手机的抓包
  5. OC1_汉字拼音转换 练习
  6. PERCONA-TOOLKIT : pt-ioprofile分析IO情况
  7. poj1740 A New Stone Game
  8. AsyncTask源码笔记
  9. C# 霍尼韦尔扫码枪扫码打印
  10. 关于Struts2中 Action 配置method的解读
  11. RTP实时传输协议
  12. django部署admin后台static文件丢失问题解决
  13. 03-树3 Tree Traversals Again(25 分)
  14. nginx+tomcat抵御慢速连接攻击
  15. iOS 关于 设计模式 与网友讨论实录
  16. mysql导入报错【The MySQL server is running with the --event-scheduler=DISABLED】
  17. mysql 存储过程和游标
  18. SSH框架——(二)四层结构:DAO,Service,Controller,View层
  19. 决策树&amp;随机森林
  20. Softmax回归 softMax回归与logistic回归的关系

热门文章

  1. 关于欧几里德算法(gcd)的证明
  2. 3、python中的字符串
  3. python集成开发环境PyCharm
  4. 4 Template层- HTML转义
  5. Python虚拟机类机制之对象模型(一)
  6. python如何合并两个字典
  7. datagrid的修改和删除功能的实现
  8. cf979d Kuro and GCD and XOR and SUM
  9. asp.net实现调用ffmpeg实现视频格式的转换
  10. 关于html头部引用(meta,link)