码迷,mamicode.com
首页 > 其他好文 > 详细

全排列

时间:2019-10-23 13:26:00      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:closed   记录   iss   close   turn   去重   思想   click   gif   

方法一(非递归):

算法原理: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

 

全排列

标签:closed   记录   iss   close   turn   去重   思想   click   gif   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!