回朔演算法——組合數
阿新 • • 發佈:2018-12-24
描述
找出從自然數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); } } }