100以内可以累加为100的整数组合
论坛地址:http://topic.csdn.net/u/20081017/00/880bd5d2-7762-4746-a66d-a1cdfdabd716.html算法真的很有趣,感谢 jayflee.
<div class="highlighter">
[*]import java.util.LinkedList;
[*]<span />
[*]<span />/**
[*] * 100以内所有可以加为100的整数的组合。<br>
[*] * 此处以10为例子。<br>
[*] * 思路是,拿到第一个数,然后把后面的递归解析,<br>
[*] * 原则后面的数不能小于当前这个数<br>
[*] * 且不大于结果减去当前数.<br>
[*] * <br>
[*] * 比如 10,技术从0开始,则当前数为1,被递归解析数为9<br>
[*] * 递归的起点为1,保证1不会再被解析。
[*] *
[*] * @author jayflee,老紫竹 java2000.net
[*] *
[*] */<span />
[*]public class T {
[*] public static void main(String[] args) {
[*] split(10, 0);
[*] }
[*]<span />
[*] static LinkedList<Integer> list = new LinkedList<Integer>();
[*]<span />
[*] public static void split(int n, int base) {
[*] if (n == 0) {
[*] System.out.println(list);
[*] return;
[*] }
[*] for (int i = base + 1; i <= n; i++) {
[*] list.addLast(i);
[*] split(n - i, i);
[*] list.removeLast();
[*] }
[*] }
[*]<span />
[*]}
页:
[1]