首页 > 其他 > 详细

全排列

时间:2019-10-23 13:39:44      阅读:60      评论:0      收藏:0      [点我收藏+]

方法一(非递归):

算法原理:P = {1,2,3,...n},元素集合

1、在P中从右向左遍历,直至查到P{i} < P{i+1} ,记录i的值

2、在P中从右向左遍历,找到第一个比P{i}大的值 P{j},记录此时j的值

3、交换P{i}??????? 和P{j}??????的值

4、将i以后的值翻转,得到新的序列

5、重复第一步,直至所有的元素都已经是倒序排列

 

方法二(递归):

基本思想:去重的全排列就是从第一个数字起每个数分别与它后面非重复出现的数字交换;增加了判断条件,重复出现则不交换,否则进行交换

技术分享图片
1 bool isSwap(int* arrayL, int begin, int end) {
2     for (int i = begin; i != end; i++)
3         if (arrayL[i] == arrayL[end])
4             return false;
5 
6     return true;
7 }
View Code

 

全排列

原文:https://www.cnblogs.com/ljy08163268/p/11725576.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!