生成所有独特的排列

我正在研究一个问题,我给了一个数字,需要找到该数字中数字的每个可能的排列。 例如,如果给予20 ,答案将是: 2002 。 我知道有n! 可能的排列,我已将数字分开,以便每个数字都是数组中的元素。 我的问题是:我如何遍历此数组以生成至少2位数但不超过6的数字的每种可能组合。

假设n单独的数字是长度为n的数组。 那么产生排列的问题归结为:

  1. 选择n数字中的一个作为要打印的第一个数字。
  2. 置换剩余的n-1数字。

递归。

这种递归函数permute的伪代码类似于:

 List permute (Array digits) { List permutations = /* initialize an empty list */ for (i=0; i 

然后简单地调用permute并打印出列表,或者用它做任何其他事情。

编辑:您还需要处理permute 1位数的边缘情况。

我认为这已经是“家庭作业”的太多信息了:)

暗示:

如何以1位数字解决这个问题?

现在,如果您对上一个问题的答案是2位数,您将如何解决这个问题?