首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

请问一个关于全排列的算法

2013-07-01 
请教一个关于全排列的算法输出a,b,b,c,d五个字符的全排列,不允许有重复算法全排列[解决办法]引用:Quote:

请教一个关于全排列的算法
输出a,b,b,c,d五个字符的全排列,不允许有重复 算法 全排列
[解决办法]

引用:
Quote: 引用:

stl next_permutation不会列举出重复的全排列
看一下next_permutation实现原理。
函数实现原理如下:
在当前序列中,从尾端往前寻找两个相邻元素,前一个记为*i,后一个记为*ii,并且满足*i < *ii。然后再从尾端寻找另一个元素*j,如果满足*i < *j,即将第i个元素与第j个元素对调,并将第ii个元素之后(包括ii)的所有元素颠倒排序,即求出下一个序列了。
以上是我在网上找到的原理,我怎么觉得有问题?如果ii个元素位置是按对调之后的,那么abc的下一个序列还是abc,如果ii的位置是按对调之前的,则不能列举出所有的排列


abc:  *i 为,b *ii 为c  , *j 为c
则ij对调, 变为 acb。ii是现在b的位置,颠倒ii和ii之后的序列,只有ii自己。
也就是不变,还是acb

热点排行