Python程序员面试分类真题19.pdfVIP

  • 4
  • 0
  • 约1.2万字
  • 约 12页
  • 2026-03-10 发布于河北
  • 举报

Python程序员面试分类真题19

1.用1、2、2、3、4、5这六个数字,写个main函数,打印出所有不同的

排列,例如:512234、412345等,要求:“4”不能在第三位,排“与排“不

能相连。

(江南博哥)正确答案:

打印数字的排列组合方式的最简单的方法就是递归,但本题存在两个难点:第

,数字中存在重复数字,第二,明确规定了某些位的特性。显然,采用常规

的求解方法似乎不能完全适用了。

其实,可以换•种思维,把求解这6个数字的排列组合问题转换为大家都

熟悉的图的遍历的问题,解答起来就容易多了。可以把1、2、2、3、4、5这6

个数看成是图的6个结点,对这6个结点两两相连可以组成个无向连通图,

这6个数对应的全排列等价于从这个图中各个结点出发深度优先遍历这个图中

所有可能路径所组成的数字集合。例如,从结点“1”出发所有的遍历路径组成

了以“1”开头的所有数字的组合。由于•“3”与“5”不能相连,因此,在构造

图的时候使图中“3”和“5”对应的结点不连通就可以满足这个

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档