【发布时间】:2015-04-05 23:00:18
【问题描述】:
我已经尝试解决这个问题很长时间了,除了一个幼稚的解决方案之外,我无法想出任何其他方法。基本上,我得到一个大小为 N 的字符网格,我必须在其中找到从左上角到右上角的不同路径的数量,当只有向下和向右移动时才会给出回文。
这是一个网格示例:
ABCD
BXZX
CDXB
WCBA
这个网格中有 12 个回文,例如“ABXZXBA”。我的解决方案是遍历网格中的所有路径,并通过为前 N 个字符保留一个字符堆栈并为接下来的 N 个字符弹出每个字符并检查它们是否相同来检查该字符串是否是回文。当 N 变得太大并且我不确定如何继续时,此解决方案会超时。任何伪代码或建议将不胜感激。
【问题讨论】:
-
对于网格中的每个字符 C,搜索以 C 为中心字符的回文。注意会有像
...xyzCzyx...和像...xyzCCzyx...这样的回文 -
如果你只被允许“向下和向右”,你怎么能到达“右上角”?
标签: c++ algorithm dynamic graph graph-algorithm