P1706 全排列问题

题目描述

按照字典序输出自然数 1 到 n 所有不重复的排列,即 n 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入格式

一个整数 n。

输出格式

由 1 ~ n 组成的所有不重复的数字序列,每行一个序列。

每个数字保留 5 个场宽。

输入输出样例

输入

3

输出

    1    2    3
    1    3    2
    2    1    3
    2    3    1
    3    1    2
    3    2    1

数据范围 1 ≤ n ≤ 9

参考答案

n = int(input())

ans = []

def dfs(path):
    global n
    if len(path) == n:
        ans.append(path.copy())
        return
    for j in range(1, n + 1):
        if j in path: continue
        path.append(j)
        dfs(path)
        path.pop()
dfs([])

for x in ans:
    for item in x:
        print(f'{item:5d}', end='')
    print()

当前复杂度:O(n!)