Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.

The same repeated number may be chosen from C unlimited number of times.

Note:

  • All numbers (including the target) will be positive integers.
  • The solution set must not contain duplicate combinations.

For example, given candidate set [2, 3, 6, 7] and target 7,

A solution set is:

[
[7],
[2, 2, 3]
]

本题是 backtrack(回溯法) 的经典应用.通过本题,仔细观察 backtrack 基本框架,并感受其应用.

另外, subset 的题目也用 backtrack 方法.

人家想法,自个代码:

  • cpp 副产品: v.pop_back(); 弹出队尾元素.
  • 要注意的是: 下面代码中 backtrack 方法中的 res, temp, A, 尤其是 temp, 他们都分别指向对应的一个对象,无论 backtrack 方法被嵌套地调用多少次!
// backtrace method
vector<vector<int>> combinationSum(vector<int>& A, int ta) {
sort(A.begin(), A.end());
vector < vector<int> > res;
vector<int> temp;
backtrack(res, temp, A, ta, 0);
return res;
} void backtrack(vector<vector<int> >& res, vector<int>& temp, vector<int>& A,
int remain, int start) {
if (remain < 0)
return;
else if (remain == 0) {
res.push_back(temp);
return;
} else {
for (int i = start; i < A.size(); i++) {
temp.push_back(A[i]); // not i + 1, because A[i] might be reused.
backtrack(res, temp, A, remain - A[i], i); temp.pop_back();
}
return;
}
}

最新文章

  1. ORACLE ORA-01157: 无法标识/锁定数据文件
  2. android自定义view属性
  3. golang学习之beego框架配合easyui实现增删改查及图片上传
  4. BroadcastReceiver的简介
  5. C# 和Jsonp的一个小demo 用jQuery与JSONP轻松解决跨域访问的问题
  6. Modbus Poll :Byte Missing Error或CRC Error
  7. 手动实现 NSTabViewController 的 Rect Transition 及 Propagate Title-b
  8. 用PHP实现一个高效安全的ftp服务器(二)
  9. SQL Server日志文件庞大收缩方法(实测好用)
  10. SpringMVC的映射器、适配器、解析器
  11. java实现:将一个数逆序输出
  12. angularJS+KindEditor无法获取或清空textarea的值
  13. python之第三方模块安装
  14. Attention模型
  15. 解决Myeclipse ctrl+h带来的困扰
  16. Android开发--ZZ:Android APK反编译详解(附图)
  17. java mysql大数据量批量插入与流式读取分析
  18. Hibernate与MyBatis的对比总结
  19. Mysql 创建普通用户、数据库、表、插入记录,用户赋权
  20. swfupload js中 file 对象的属性

热门文章

  1. SpringCloud的服务注册中心(四)- 高可用服务注册中心的搭建
  2. 使用 vi 命令
  3. 输入法searchLookUpEditd的使用
  4. SQL字符串操作汇总
  5. C#制作ActiveX插件
  6. UVA732【DFS+栈】
  7. python/Djangof分页与自定义分页
  8. 南京邮电大学java程序设计作业在线编程第三次作业
  9. .Net Core 通过依赖注入和动态加载程序集实现宿程序和接口实现类库完全解构
  10. [LeetCode] Employee Free Time 职员的空闲时间