字符串的第k个子序列

时间:2016-12-22 16:46:02

标签: c++ string algorithm data-structures dynamic-programming

给定一个字符串S和一个整数K,我们必须找到一个字符串T,这样如果我们按字典顺序排列字符串S的所有子序列,那么T就位于第K位。

以下是问题Link

的链接

我在动态编程方面遇到了问题,我遇到了这个问题。但是我无法解决它。

1 个答案:

答案 0 :(得分:0)

我不能给你精确的算法,因为我看到链接的描述与你的不同。但您可以使用Depth-First-Search的变体来完成此任务。

1)制作一个算法,在控制台上打印所有正常的子字符串。使用Depth-Fist-Search算法传递字符。算法的每次迭代都应该生成一个单词。考虑您通过带有循环的图形,为此您需要在每次下一次迭代时存储所有已传递的字符 - 使用容器。

2)创建一个函数,考虑到当前深度级别的已处理字符,返回下一个词典字符的索引。修改算法,使其返回具有一定长度的词典子字符串。

请注意,此功能需要通过链接添加问题。要求必须保留字符的顺序。因此,在将“已处理的字符”传递给下一次迭代之前,您还需要处理从当前字符开始处理的所有字符。

4)现在将它们存储在容器中并为每个子字符串增加一个计数器,而不是打印子字符串。如果您已经处理了相同的单词,则不会增加计数器。当你的计数器到达T时,你就有了自己的话语。如果算法结束且计数器不等于T,则打印“Eel”。