您的位置:首页 > 其它

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);
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: