【发布时间】:2015-02-19 10:27:20
【问题描述】:
将 B 视为一组符号 (, )、[、]、{ 和 } 的序列。如果 B 的长度为 0 或 B 具有以下形式之一,则称为平衡序列: { X } Y 或 [ X ] Y 或 { X } Y 其中 X 和 Y 本身是平衡的。平衡示例: ( ) - { [ ] ( ) } [ ] - ...
现在的问题是找到一种有效的算法来找到给定输入的最大长度平衡子序列(不一定是连续的),它是这些分组符号的字符串。
例如,如果输入是 ( ) { ( [ ) ] { ( ] ) } } [ ] ,则最大长度子序列之一是 ( ) { [ ] { ( ) } } [ ]
我几乎可以肯定解决方案是 DP,但无论如何我解决了它,我发现我的算法不起作用的例子。我确定只有一种方法,即 DP 和分而治之的结合。但它效率不高,因为无论如何 D&C 部分会一遍又一遍地解决一些重叠的问题。
【问题讨论】:
标签: algorithm optimization dynamic-programming divide-and-conquer