一种字符串处理语言提供了一种将字符串分成两个部分的原始操作。由于这个操作涉及复制原始字符串,对于长度为n的字符串,无论切割的位置如何,都需要n个单位的时间。现在假设您想将一个字符串分成多个部分。断点的顺序可能会影响总运行时间。例如,如果您想在第3和第10个位置处截断20个字符的字符串,则在位置3进行第一次切割会产生总成本为20 + 17 = 37,而在位置10进行第一次切割的成本更好为20 + 10 = 30。
给出一个动态规划算法,它给出了在长度为n的字符串中的m个割线的情况下,将字符串分成m + 1个部分的最小成本。
此问题来自“算法”第6章6.9。
由于这个问题没有答案,这是我想到的。
将OPT(i,j,n)定义为打破字符串的最小成本,i为字符串的起始索引,j为结束索引,n为我可以使用的剩余切数。
以下是我的思路:
OPT(i,j,n) = min {OPT(i,k,w) + OPT(k+1,j,n-w) + j-i} for i<=k以上是否正确?请帮忙确认,谢谢!
给出一个动态规划算法,它给出了在长度为n的字符串中的m个割线的情况下,将字符串分成m + 1个部分的最小成本。
此问题来自“算法”第6章6.9。
由于这个问题没有答案,这是我想到的。
将OPT(i,j,n)定义为打破字符串的最小成本,i为字符串的起始索引,j为结束索引,n为我可以使用的剩余切数。
以下是我的思路:
OPT(i,j,n) = min {OPT(i,k,w) + OPT(k+1,j,n-w) + j-i} for i<=k以上是否正确?请帮忙确认,谢谢!