10选N排列
0~9这十个数中选出N个数的排列
1<=N<=10
样例输入
2
样例输出
01 02 03 04 05 06 07 08 09 10 12 13 14 15 16 17 18 19 20 21 23 24 25 26 27 28 29 30 31 32 34 35 36 37 38 39 40 41 42 43 45 46 47 48 49 50 51 52 53 54 56 57 58 59 60 61 62 63 64 65 67 68 69 70 71 72 73 74 75 76 78 79 80 81 82 83 84 85 86 87 89 90 91 92 93 94 95 96 97 98
import java.util.Scanner;
public class Main {
static int s[]=new int [10];
static int num[]={1,2,3,4,5,6,7,8,9,10};
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int n =scan.nextInt();
Dfs(0,n);
}
public static void Dfs(int deep,int n){
if(deep==n){
for(int i=0;i<n;++i)
System.out.print(s[i]+" ");
System.out.println();
}else{
for(int i=0;i<10;++i){
if(num[i]==-1)continue;
s[deep]=num[i];
num[i]=-1;
Dfs(deep+1,n);
num[i]=s[deep];
}
}
}
}
//对于组合,如下:
public class Main {
static int s[]=new int [3];
static int num[]={1,2,3};
public static void main(String args[]){
Dfs(0,0);
}
private static void Dfs(int deep,int begin) {
// TODO Auto-generated method stub
if(deep==3){
for(int i=0;i<deep;++i){
System.out.print(s[i]);
}
}else{
for(int i=begin;i<3;++i){
if(num[i]==-1)continue;
s[deep]=num[i];
num[i]=-1;
Dfs(deep+1,begin+1);
num[i]=s[deep];
}
}
}