指定排序的序列
给定参数n,从1到n会有n个整数:1,2,3,...,n,这n个数字共有n!种排列. 按大小顺序升序列出所有排列的情况,并一一标记,
当n=3时,所有排列如下:"123" "132" "213" "231" "312" "321"
给定n和k,返回第k个排列.
输入描述:
输入两行,第一行为n,第二行为k, 给定n的范围是[1,9],给定k的范围是[1,n!]。 输出描述:
输出排在第k位置的数字。
示例1:
输入:
1 2 3 3 输出:
1 213 说明
3的排列有123,132,213...,那么第三位置就是213
示例2:
输入
1 2 2 2 输出:
1 21 说明
2的排列有12,21,那么第二位置的为21
n=2
res=[]
ret=[]
for i in range(1,n+1):
res.append(str(i))
print(res)
def backtrack(nums,tmp):
if len(tmp)==n and tmp not in ret:
ret.append(tmp[:])
for i in range(len(nums)):
tmp.append(nums[i])
backtrack(nums[:i]+nums[i+1:],tmp)
tmp.pop()
backtrack(res,[])
print(ret)
a=[]
for i in ret:
tmp=''.join(i)
a.append(tmp)
a=list(map(int,a))
a.sort()
print(a[n-1])