排列序列 给出集合 [1,2,3,...,n],其所有元素共有 n! 种排列。 按大小顺序列出所有排列情况,并一一标记,当 n = 3 时, 所有排列如下: "123" "132" "213" "231" "312" "321" 给定 n 和 k,返回第 k 个排列。 示例 1: 输入:n = 3, k = 3 输出:"213" 示例 2: 输入:n = 4, k = 9 输出:"2314" 示例 3: 输入:n = 3, k = 1 输出:"123" def jicheng(n:int)->int: if n == 1: return 1 return n * jicheng(n-1) def quanpailie(list_zuhe1:str)->str: """ 全排列 """ lenstr = len(list_zuhe1) if lenstr < 2 : return list_zuhe1 else: result = [] for i in range(lenstr): ch = list_zuhe1[i] rest = list_zuhe1[0:i] + list_zuhe1[i+1:lenstr] for s in quanpailie(rest): result.append(ch + s) return result def zhidingzifu(n:int,k:int)->str: l = 1 for i in range(1,n+1): l = l * i if k > l: raise Exception("%d不在范围内" % m) else: list_zuhe = [str(i) for i in range(1, n+1)] list_zuhe1 = ''.join(list_zuhe) list_quanmai = quanpailie(list_zuhe1) list_quanmai.sort() return list_quanmai[k-1]
python练习-排列序列
最新推荐文章于 2023-06-04 20:42:09 发布