首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

全排序中怎么去除重复序列

2013-10-04 
全排序中怎样去除重复序列将n个字符中第i到j个元素全排序,并且去除其中重复的序列。我想的思路是:1.删除其

全排序中怎样去除重复序列
将n个字符中第i到j个元素全排序,并且去除其中重复的序列。
我想的思路是:
1.删除其中重复的元素,并统计其个数为k然后在排序后结果中将重复元素从后往前插入直到遇到相同的元素。
2.在全排序时,后面元素渐渐靠前,可不可以让重复的元素不超过第一个重的。例如:abca(下标为1,2,3,4),使下标为4的a永远不排在1的前边。
不知道以上两种思路是否可行............ c c++ 算法
[解决办法]
用1做过,很容易实现。
[解决办法]
递归全排列算法稍改下就好了
swap前判断下 如何待交换的两个字符不一样则交换, 一样跳过就好了
[解决办法]


std::sort(std::begin(a), std::end(a));
auto it = std::unique(std::begin(a), std::end(a));
a.erase(it, std::end(a));

[解决办法]
你可以用树排序。标准库的set和map都是用有序树实现的。你把数据作为key塞进去,自然就是排好而且去重复的。
缺点就是比较占空间。
你也可以先排好,然后遍历一遍。由于是排好的,所以重复的数据都是挨着的,很容易删掉。
[解决办法]
用stl里现成的全排列算法即可,别折腾。

热点排行