学习了大佬的博客:https://www.cnblogs.com/willaty/p/8134672.html
给定字符串 s 和 匹配模式 p 下文中的“~”表示匹配
bool dp[i][j] —— s的0~i个字符与p的0~j个字符是否匹配
(1)p中不存在 * ->按位匹配即可
(2)p中有*
s中的子串[0,i]都可以表示为 s1=Sx 其中S为前i-1位构成的字符串 x为第i位
p中的子串[0,j]都可以表示为p1=Pya 其中P为前j-2位构成的字符串 y为第j-1位 a为第j位
计算 dp[i][j] 即匹配s1和p1
①x=a 这时,若S~Py,则s1~p1 即dp[i][j]=dp[i-1][j-1]
②x!=a ①a!=* dp[i][j]=0
②a=* ①x!=y 若Sx~P 则s1~p1 即dp[i][j]=dp[i][j-2]
②x=y 若S~P 或 Sx~P 或 S~Py 或Sx~Py或S~Pya 则s1~p1
即dp[i][j]=dp[i-1][j-2]||dp[i][j-2]||dp[i-1][j-1]||dp[i][j-1]||dp[i-1][j]