字符:全排列

最后都变了- 提交于 2020-01-23 13:04:51

全排列

一丶递归算法

在这里插入图片描述
每次固定以为,递归寻找后面的全排列

如何解决重复问题

我们只使用重复出现的最后一位,每次检查数字后面有没有再次出现过,出现就continue,没有了就可以进行递归操作,这里的比较是O(n)的。假如需要更快的我们可以直接用空间来标记是否访问过,这就是O(1),但是这个算法到最后还是阶乘级别的。

二丶非递归算法

从小到大依次生成序列,比如

123 ,132 ,213, 231,312,321

问题就是关键找到紧邻的下一个排列,方法如下
在这里插入图片描述

C++STL已经在Algorithm中集成了
next_permutation

如果相等就再滑动下一位

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!