csdn里的每日一练,这个还是简单的。算法高阶,数论算法。
这个不是原创,我只是给增加了备注。找不到源文件,无法获取授权,只好算原创
学到个新函数set(),Python set() 函数 | 菜鸟教程。
'''
输出整数的全排列
输入整数n(3<=n<=7),编写程序输入1,2,...,n整数的全排列,按字典序输出。
输入样例:
输入3
输出123,132,213,231,312,321
'''
import random
n=int(input()) #输入整数n
t=list() #新建一个空列表,等价于t=[]
t1=set() #set()函数是一个无序不重复元素集
for i in range(1,n+1):
t.append(str(i)) #列表t中有n个数,1,2,...,n
while True:
sum=1 #全排列组合的个数
for i in range(1,n+1):
sum*=i #排列组合问题,n的全排列有1*2*3*...*n种
if len(t1)>=sum:
break
random.shuffle(t) #对列表洗牌,也就是随机排序
t1.add(''.join(t))
s=sorted(t1) #对t1进行排序
for i in s:
print(i,end=' ')
运行没问题。