1. 程式人生 > >回朔演算法——組合數

回朔演算法——組合數

描述 找出從自然數1、2、... 、n(0<n<10)中任取r(0<r<=n)個數的所有組合。
輸入
輸入n、r。
輸出
按特定順序輸出所有組合。
特定順序:每一個組合中的值從大到小排列,組合之間按逆字典序排列。
樣例輸入
5 3
樣例輸出
543
542
541
532
531
521
432
431
421
321
package 組合數;

import java.util.Scanner;
public class Main {
	static int a[]=new int[1000];
	static int m,x;
   public static void main(String[] args) {
	Scanner in=new Scanner(System.in);
	m=in.nextInt();
	 x=in.nextInt();
	dfs(m,1);
  }
    static void dfs(int n, int s){
	   if(s==x+1){
		   for(int i=1;i<=x;i++)
			   System.out.print(a[i]);
		   System.out.println();
	   }
	   for(int i=n;i>0;i--){
		   a[s]=i;
		   n=n-1;
		   dfs(n,s+1);
	   }
   }
}