我一直对算法、排序、加密、二叉树、数据压缩、内存操作等感兴趣。
我用 STL 函数 next_perm() 阅读了 Mark Nelson 关于 C++ 中排列的文章,非常有趣和有用,之后我编写了一个类方法来在 Delphi 中获取下一个排列,因为这是我目前使用最多的工具。这个函数适用于字典顺序,我从stackoverflow上另一个主题的答案中得到了算法的想法,但现在我遇到了一个大问题。我正在处理向量中重复元素的排列,并且有很多我不需要的排列。例如,我有 7 个元素的第一个排列(按字典顺序):
6667778(6 = 连续 3 次,7 = 连续 3 次)
对于我的工作,我认为有效的烫发只有那些最多连续重复 2 个元素的烫发,如下所示:
6676778(6 = 连续 2 次,7 = 连续 2 次)
简而言之,我需要一个函数,该函数根据收到的参数仅返回最多具有 N 个连续重复的排列。
有谁知道是否有一些算法已经这样做了?
很抱歉文本中的任何错误,我仍然不会说英语。
非常感谢,卡洛斯