Sum = K
2016-07-18 13:59
344 查看
给一个正数n,打印出所有相加的组合
例如10可以打印出
1+1+1+...1
1+2+1+...1
...
鐣欏鐢宠璁哄潧-涓€浜╀笁鍒嗗湴
9+1
10
import java.util.*;
public class Sum10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list = sum10(6);
for (String str: list) {
System.out.println(str);
}
}
private static List<String> sum10(int num) {
List<String> res = new LinkedList<>();
List<String> list = new LinkedList<>();
list.add("1");
if (num == 1)
return list;
helper(res, list, 1, 1, num);
res.add(String.valueOf(num));
return res;
}
private static void helper(List<String> res, List<String> list, int idx, int sum, int target) {
if (sum == target) {
StringBuilder sb = new StringBuilder();
for (String str: list) {
sb.append(str);
}
res.add(sb.toString());
return;
}
for (int i = idx; i <= target; i++) {
if (sum + i > target)
return;
list.add("+");
list.add(String.valueOf(i));
helper(res, list, i, sum + i, target);
list.remove(list.size() - 1);
list.remove(list.size() - 1);
}
}
}
例如10可以打印出
1+1+1+...1
1+2+1+...1
...
鐣欏鐢宠璁哄潧-涓€浜╀笁鍒嗗湴
9+1
10
import java.util.*;
public class Sum10 {
public static void main(String[] args) {
// TODO Auto-generated method stub
List<String> list = sum10(6);
for (String str: list) {
System.out.println(str);
}
}
private static List<String> sum10(int num) {
List<String> res = new LinkedList<>();
List<String> list = new LinkedList<>();
list.add("1");
if (num == 1)
return list;
helper(res, list, 1, 1, num);
res.add(String.valueOf(num));
return res;
}
private static void helper(List<String> res, List<String> list, int idx, int sum, int target) {
if (sum == target) {
StringBuilder sb = new StringBuilder();
for (String str: list) {
sb.append(str);
}
res.add(sb.toString());
return;
}
for (int i = idx; i <= target; i++) {
if (sum + i > target)
return;
list.add("+");
list.add(String.valueOf(i));
helper(res, list, i, sum + i, target);
list.remove(list.size() - 1);
list.remove(list.size() - 1);
}
}
}
相关文章推荐
- CodeForces 643E Bear and Destroying Subtrees (概率)
- leetcode_c++:链表:Reorder List(143)
- u-boot2013.01 smdk2410 启动第二阶段分析之引导内核
- python访问mysql将返回的表转化为json
- mvc 分页PagedList简单使用
- phpStudy for Linux (lnmp+lamp一键安装包)
- Java:Map与HashMap,Hashtable,HashSet比较
- Android 跨进程通信学习标签
- php学习之路
- 国内一些大公司(阿里巴巴、腾讯、百度、网易、豆瓣等)的开源项目
- 通过带有泛型类型的父类获取实体类型
- liunx 系统注意危险的十大命令---谨慎使用
- Embedded Linux S3C2440 environment setup
- 滤波基础知识
- 过滤器
- 几种常见架构模式
- 仿制网站被抄袭的几个有效解决的方法
- js判断是否为PC端
- android wear下载
- Delphi 自动检测U盘插入、拔出及获取U盘盘符!