全排列递归(解决了重复字符问题)

匿名 (未验证) 提交于 2019-12-03 00:30:01

网上有很多讲解全排列递归的算法思路以及程序,所以在此本菜鸟就不再写一遍了。

今天的重点在解决重复字符方面,感觉网上博客里的解决思路大都一致,写一个isSwap函数,然后在递归主体里判断一下函数返回true还是false,大神们也都po出了程序运行图。然而我这么写的程序最终跑不出来预期结果,因此我分析了一下,觉得可以有一个更为简单的办法去重。

要点就是:如果发现待交换的两个字符str[i] == str[k],并且i!=k时,就不交换了,如此即可去重

可运行代码如下(去重判断部分已加粗):

















if(i==k || (str[i]!=str[k])){




















运行结果:


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