首页 > 试题广场 >

全排列

[编程题]全排列
  • 热度指数:2004 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
{\hspace{15pt}}给定一个整数 n,请按 字典序 输出数字 1\sim n 的所有排列。

输入描述:
{\hspace{15pt}}一行一个整数 n\left(1\leqq n\leqq 9\right)


输出描述:
{\hspace{15pt}}按字典序输出所有排列,每行输出 n 个整数,数字之间用单个空格分隔。
示例1

输入

3

输出

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

备注:

def full_permutations(arr):
    def backtracking(path, used):
        if len(path) == len(arr):
            result.append(path[:])
            return
        for i in range(len(arr)):
            if used[i]:
                continue
            path.append(arr[i])
            used[i] = True
            backtracking(path, used)
            path.pop()
            used[i] = False
    result = []
    backtracking([], [False] * len(arr))
    return result

n = int(input())
st = [str(x) for x in range(1, n+1)]
answer = full_permutations(st)
for lis in answer:
    print(' '.join(lis))
发表于 2025-10-18 11:52:16 回复(0)