这基本上是一个共同的:
How to split a string into words. Ex: "stringintowords" -> "String Into Words"?
neverthelees,我使用了一个函数:public int Word(x) {code}
,其中对于字符串x,它将返回一个整数(+ ve或-ve),该整数将表示有多好或者分区是针对特定单词的。我应该返回给出最大数字的组合。
我想为此做的是创建一个表(i,j),其中i和j具有单词的长度,并填写表格如下:
for i = 1 to n
for j=i to n do
word(subset of x i to j)
并填写表格,然而,我将如何能够以递归的方式检索最佳解决方案?
任何帮助表示感谢。
编辑:最佳路径是具有最高的词(x)函数和的路径,即如果我们有
路径(1,3)= 10,(3,6)= 20,(6,7)= 1,和
路径(1,1)= 0,(2,5)= 12,(5,7)= - 1
那么第一路径的总和>第二
EDIT2:我希望每个人都知道,经过长时间的工作后,我已经回答了这个问题,因为没有得到解决方案,所以我自己总是这样认为:P
欢呼:!)
答案 0 :(得分:0)
Sam,你说的是:
你有一个表填充你在字符串中的位置,如果有一个长度为j的子字符串,则表示每个单元格的布尔值。
示例:
| Positions of the example:
| "xdeafcatmonologue"
-------------------|-------------01234567890123476----------------
length of substring |
1 | 11111111111111111
2 | ------2----------
3 | -----3------3----
4 | -4---------------
5 | -----------------
6 | -----------------
7 | -----------------
8 | -----------------
9 | --------9--------
|
final | -4---3--9---3----
破折号在技术上是零,数字潜力,这是你要建立的表格。
如果只存储每个位置的最大值,则可以构建一个小得多的表,因为Word函数会告诉您每个位置的最大值。如果迭代子字符串大小,变量j,则无关紧要,因为Word不使用j。
如果我误解了这些假设,请纠正我。
答案 1 :(得分:0)
好吧,让我举个例子:
word thetree
1 2 3 4 5 6 7 ( ending index)
start 1 1 -1 2 -1 -1 -1 -1
2 0 1 -1 -1 -1 -1 -1
3 0 0 1 0 0 0 0
4 0 0 0 1 0 0 4
5 0 0 0 0 1 0 0
6 0 0 0 0 0 1 0
7 0 0 0 0 0 0 1
考虑这个解决方案,然后如果你单独存储每个列,那么在第3号柱上你得到2,在7你得到4,这总共得到6,不过,如果你单独拿出每个字母,那么:1 + 1 + 1 + 1 + 1 + 1 + 1 = 7(对角线向下i = j)这意味着talbe是不正确的......
如果我只能存储最好的前一个肠道的位置,这可能会有效。(我想再次)