今天找了CPP的同学输出了一个例子看了一下这个表格。CPP直接查看内存中的变量调试,还真是方便呀。
输入
s=abccg
p=abcdg
得出的DP数组为

我们观察标记true和false。
对于匹配符 :左侧空格 或 上侧空格 或 修饰的字符匹配当前字符成功
对于非*匹配符: 左上侧空格 且 自己匹配当前字符成功
我们发现他是根据你前面的匹配成功与否影响接下来的匹配,同时一个正确命中的s和p其实可以有很多种组合来命中
就比如
s=abccg
p= abc.g
这个输入时匹配成功的,但其实有三种匹配方式
第一种 (s) (p)
a =>a
b =>b
cc=>c*
'' =>.*
g =>g
第二种 (s) (p)
a =>a
b =>b
c=>c*
c =>.*
g =>g
第三种 (s) (p)
a =>a
b =>b
'' =>c*
cc=>.*
g =>g
这三种情况都是可以匹配成功的,所以他判断的方式有很多,我们现在从答案很好分析他是如何解答的,但是其实正向的写出这些判断条件还是有些迷,等之后我会专门研究一下动态规划然后重新解这题。