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];
}
}
}
本文提供了一个从0到9这十个数字中选择N个数字进行排列的Java实现案例,展示了递归深度优先搜索(DFS)算法的应用。通过调整输入参数N,可以生成不同长度数字的所有可能排列。

被折叠的 条评论
为什么被折叠?



