指定排序的序列

给定参数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])


全部评论

相关推荐

DBsan:我也遇到过好的HR,全程友好交流。这年头基本的礼貌和尊重为什么好多HR都做不到
找工作时遇到的神仙HR
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务