【问题标题】:Kth subsequence of a string字符串的第 K 个子序列
【发布时间】:2016-12-22 16:46:02
【问题描述】:

给定一个字符串 S 和一个整数 K,我们必须找到一个字符串 T 使得如果我们按字典顺序对字符串 S 的所有子序列进行排序,那么 T 在第 K 个位置。

这里是问题的链接Link

我在练习动态编程的问题时遇到了这个问题。但是我无法解决它。

【问题讨论】:

  • 请向我们展示您到目前为止所做的尝试

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


【解决方案1】:

好吧,我无法为您提供精确的算法,因为我看到链接中的描述与您的不同。但是您可以使用深度优先搜索的变体来完成此任务。

1) 制定一个在控制台上打印所有正常子字符串的算法。使用深度拳头搜索算法来传递字符。算法的每次迭代都应该产生一个单词。考虑一下您通过一个带有循环的图形,因为您需要在每次下一次迭代时存储所有已经通过的字符 - 使用容器。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2020-09-16
    • 2018-04-23
    • 2020-10-02
    • 2011-10-04
    相关资源
    最近更新 更多