1. 程式人生 > >輸入兩個整數值n和m,求出整數1到n之間的和為m的所有組合

輸入兩個整數值n和m,求出整數1到n之間的和為m的所有組合

/**
 * java實現,參考寫的
 */
import java.util.ArrayList;
import java.util.Scanner;
public class Lx{
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		int m=sc.nextInt();
		int sum=0;
		ArrayList<Integer> list=new ArrayList<Integer>();
		computeSum(n,m,list,sum);
		sc.close();
	}
	public static void computeSum(int n, int m, ArrayList<Integer> list, int sum) {
		
		if(sum>m){
			return;
		}
		else if(sum==m){
			if(list.get(0)<=list.get(list.size()-1)){
				for(int j=0;j<list.size();j++){
					System.out.print(String.valueOf(list.get(j))+" ");
					}
				System.out.println();
			}
			return;
		}
		int i;
		for(i=1;i<n+1;i++){
			if(!list.contains(i)){				
				list.add(i);
				computeSum(n,m,list,sum+i);
				list.remove(list.size()-1);
			}
		}
		return;		
	}
}