c++dfs求全排列,求详细解释

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++dfs求全排列,求详细解释相关的知识,希望对你有一定的参考价值。

while去重复

参考技术A 你程序中的dfs是一个深度搜索函数,它用递归的方法求全排列追问

那请问那个while去重复是怎么实现的,就是比如1123吧,出现重复的不会重复输出,

本回答被提问者和网友采纳

60. Permutation Sequence(求全排列的第k个排列)

The set [1,2,3,…,n] contains a total of n! unique permutations.

By listing and labeling all of the permutations in order,
We get the following sequence (ie, for n = 3):

  1. "123"
  2. "132"
  3. "213"
  4. "231"
  5. "312"
  6. "321"

 

Given n and k, return the kth permutation sequence.

Note: Given n will be between 1 and 9 inclusive.

 

如果用前面2道题 的递归 非递归 都会超时。

只能用数学的方法计算。

 1 class Solution(object):
 2 
 3     def getPermutation(self, n, k):
 4         """
 5         :type nums: List[int]
 6         :rtype: List[List[int]]
 7         """
 8         k = k -1
 9         nums = list(range(1, n + 1))
10         res = ‘‘
11         while len(nums)!=0:
12             ai =int(k/self.fn(n-1))
13             res += str(nums[ai])
14             del nums[ai]
15             k = k % self.fn(n-1)
16             n = n - 1
17         return res
18     def fn(self, n):
19         res = 1
20         while n != 0:
21             res = res * n
22             n = n - 1
23         return res
24             

 

以上是关于c++dfs求全排列,求详细解释的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode46 回溯算法求全排列,这次是真全排列

面试题:字符串的全排列

一文搞懂全排列组合子集问题(建议收藏)

专题训练 1001 求全排列

c语言全排列

全排列——DFS实现