1

给定一个数组字符串,找到最长的回文子串。例如,如果给定的字符串是“forgeeksskeegfor”,则输出应该是“geeksskeeg”。

该问题通过动态规划有一个有效的解决方案。

但是,我只是想知道为什么我们不能以与解决最大子数组问题类似的方式解决分治问题。(http://en.wikipedia.org/wiki/Maximum_subarray_problem

我们制定了用 D&C 有效解决的最大子阵列问题:

1)将给定数组分成两半 2)返回以下三个中的最大值 ....a)左半部分的最大子数组和(进行递归调用)......b)右半部分的最大子数组和(进行递归调用)...... .c) 最大子数组总和,使得子数组穿过中点

最长的回文子序列问题可以是:

1)将给定数组分成两半 2)返回以下三个中的最大值 ....a)左半部分的最大回文和(进行递归调用) ....b)右半部分的最大回文和(进行递归调用)... .c) 子数组穿过中点的最大回文和

我们可以考虑实施并说不存在解决方案,但问题结构如何阻止我们思考 D&C 解决方案?

4

1 回答 1

0

如果字符串的格式为“13267224”,则分而治之的方法可能会起作用。这里,6+2+3 = 11 和 7+2+2 = 11 因此,“326722”是最长的回文和子串。但是在字符串的情况下,例如。“abaccidba”,分而治之是行不通的。

于 2021-07-16T18:52:03.327 回答