输入整数n,编写程序输出1,2,...,n
整数的全排列,按字典序输出。
输入格式:
输入一个正整数n。
输出格式:
按字典序输出1到n的全排列。每种排列占一行,数字间无空格。
输入样例:
在这里给出一组输入。例如:
3
输出样例:
在这里给出相应的输出。例如:
123
132
213
231
312
321
#全排列:建立子列表
#定义排列函数
def Permutations (n,buffer,l,result,cou):
#保存数据判断
if cou == n:
result.append(buffer)
return
#递归排列
for i in range(len(l)):
x = l[i]
next_buffer = buffer + str(x)
#子列表建立(列表的传递是指针传递,不能直接 ’=‘
next_l = l[:i] + l[i + 1:]
Permutations(n, next_buffer, next_l, result, cou + 1)
n = int(input())
#所需列表生成
List = [int(x) for x in range(1,n+1)]
#结果声明
result = []
#定义缓存
buffer = ''
#定义计数器
cou = 0
#调用函数
Permutations(n,buffer,List,result,cou)
print(result)
#全排列:资格门
def Permutations(n, buffer, L, result, cou, visited):
if cou == n:
result.append(buffer)
return
for x in L:
#资格判断
if not visited[x]:
next_buffer = buffer + str(x)
#资格消费
visited[x] = True
Permutations(n, next_buffer, L, result, cou + 1, visited)
#资格回归
visited[x] = False
n = int(input())
List = [int(x) for x in range(1, n + 1)]
result = []
buffer = ''
cou = 0
#定义资格变量
visited = [False] * (n + 1)
Permutations(n, buffer, List, result, cou, visited)
print(result)
以上代码全为本人亲自手敲,可能有一些错误和不足之处,如有更好的方法和建议,欢迎您在评论区友善讨论。