题目描述

把 1\sim n1∼n 这 n(n \lt 10)(n<10)个整数排成一行后随机打乱顺序,输出所有可能的次序。

输入描述:

一个整数n。

输出描述:

按照从小到大的顺序输出所有方案,每行1个。 首先,同一行相邻两个数用一个空格隔开。其次,对于两个不同的行,对应下标的数一一比较,字典序较小的排在前面。

分析

alt

```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);
            }
        }
    }
}