题目描述
把 1\sim n1∼n 这 n(n \lt 10)(n<10)个整数排成一行后随机打乱顺序,输出所有可能的次序。
输入描述:
一个整数n。
输出描述:
按照从小到大的顺序输出所有方案,每行1个。 首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。
分析
```import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 1; i <= n; i++){
doTest(i + "",n,1);
//存放第一位分别为1,2,3
}
}
public static void doTest(String str, int n, int len){
if(len == n){
//len记录第几位,len如果第n位的话,就直接输出啦
System.out.println(str);
}
for(int j = 1; j <= n; j++){
if(str.indexOf(j + "") == -1){
//str.indexOf(),寻找这个字符串有没有1,2,3。有的话就不再填,没有的话就加后面,在进行递归往下填
doTest(str + " "+j,n,len+1);
}
}
}
}