题解|#递归实现排列型枚举#

递归实现排列型枚举

https://ac.nowcoder.com/acm/problem/50919

题目描述

把 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);
            }
        }
    }
}
全部评论

相关推荐

06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务