原来记得在这看到过一个算法的帖子,现在找不到了,希望有记录的给个链接,帖子内容大体如下:给一个整数N,求所有相加等于N的整数的组合。比如给一个整数5
1+1+1+1+1=5
2+1+1+1=5
3+1+1=5
4+1=5
2+2+1=5
2+3=5或者哪位高手给个算法解决方法
1+1+1+1+1=5
2+1+1+1=5
3+1+1=5
4+1=5
2+2+1=5
2+3=5或者哪位高手给个算法解决方法
调试欢乐多
楼主看看这里
比如给出一个数50,要求从1—30这个范围内挑出1个或多个数字组成一个集合,这个集合里元素之和等于50
如:集合1,4,20,25满足条件,因为1+4+20+25=50,且每个元素都在1——30范围集合{50},{20,30},{5,20,25} {4,6,10,30}等等都满足条件
请问如何求出所有符合条件的集合,用什么算法效率最高?(给出的数在200以内)
public class T {
public static void main(String[] args) {
split(50, 0);
} static LinkedList<Integer> list = new LinkedList<Integer>(); public static void split(int n, int base) {
if (n == 0) {
if(list.size() == 1)
{
return;
}
if( list.getLast() > 30)
{
return;
}
System.out.println(list);
return;
}
for (int i = base + 1; i <= n; i++) {
list.addLast(i);
split(n - i, i);
list.removeLast(); //
}
}}