全排列问题
题目描述
按照字典序输出自然数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
代码详解
展开查看
n = int(input()) st = [False for i in range(n+1)] arr = [0 for i in range(n+1)]def dfs(x): if x > n: for i in range(1, n+1): print(' ', end='') print(arr[i], end='') print() return for i in range(1, n+1): if not st[i]: st[i] = True arr[x] = i dfs(x+1) st[i] = False arr[x] = 0dfs(1)
运行结果
展开查看
3 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1