如何通过检查v。字典来查找删除了空格的短语中的单词数

时间:2014-06-17 07:27:31

标签: c++ c algorithm dynamic-programming

我有一个单词,例如"ilikesamsung"和一个单词词典,例如:

{"i","like","the","king","sam","sung","samsung"}

如果我们将它分成字典单词,我想计算这个单词中的空格数。在上面的示例中,字符串分为"i like samsung",并且有2个空格。

怎么做?

精化:

问题有2个部分 -

  1. 输出是的,如果这个词可以被破坏。
  2. 计算空格数
  3. 我尝试了什么:

    我通过动态编程解决了第一部分。

    第二部分:
    我已经扩展了DP方法来解决第2部分。我拿了一个数组,然后我存储了哪个单词结束的索引。 arr[]={1,0,0,0,1,0,0,1,0,0,0,1}

    这给出了答案3。 我想要回答2,因为这个数组应该是{1,0,0,0,1,0,0,0,0,0,0,1}

    有任何建议吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Dynamic Programming执行此任务:

f(0) = 0
f(i) = MIN { f(i-j) + (Dictionary.contais(s.substring(i-j,i)?1:INFINITY } for each j=1,...,i

以上查找字符串中的单词数,因此最终答案为f(#characters)-1

我们的想法是进行彻底的搜索" - 对于给定的新角色 - 尝试将其连接到一个单词,并以递归方式调用该字符串中剩下的内容。

这可以通过DP技术非常有效地完成。