输入整数n(3<=n<=7),编写程序输出1,2,…,n整数的全排列,按字典序输出。
输入格式:
一行输入正整数n。
输出格式:
按字典序输出1到n的全排列。每种排列占一行,数字间无空格。
import math
n=int(input())
num=[]
for i in range(n):
num.append(str(i+1))#将num扩充为字符列表,存储着所有的元素
def f(x,s=""):
s+=str(x)
if len(s)<n:#s的长度作为循环判断条件
for i in num:
if i not in s:#取那些不在s里的字符,连接起来
f(i,s)
else:
print(s)
for i in range(1,n+1):
f(i)
另有方法暴力枚举,比如输入3,从100开始到400的数据。建立一个字符集,对每个数据,分割,如果和字符集完全相同,那么就是相同的,可以输出。
import math
n=int(input())
num=[]
num=set([str(i) for i in range(1,n+1)]) #数字库
for i in range(pow(10,n-1),(n+1)*pow(10,n-1)):#枚举范围
i=str(i)
s=set()#s是个集合
for j in i:
s.add(j)#添加字符
if s==num:#集合与集合才能比较
print(int(i))
t=[]
s=set()
for i in range(1,n+1):
t.append(str(i))
all=factorial(n)#n个数字有n!种排列
while len(s)<all:
random.shuffle(t)#每次都打乱
s.add("".join(t))#拼成字符串,加到集合
s=sorted(s)#按照字典序排列
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务