C++代码:
if(p.size()==0&&s.size()==0)
{
return true;
}
else if(p.size()==0&&s.size()!=0)
{
return false;
}
else
{
bool dp[s.size()+1][p.size()+1];
memset(dp, 0, sizeof(dp));
dp[0][0]=1;
for (int i=0;i<=s.size();i++)
{
for (int j=1;j<=p.size();j++)
{
if(i&&(s[i-1]==p[j-1]||p[j-1]=='.'))
dp[i][j]=dp[i-1][j-1];
else if(p[j-1]=='*'&&j!=1)
{
if(i==0)
dp[i][j]=dp[i][j-2];
else if(s[i-1]==p[j-2]||p[j-2]=='.')
dp[i][j]=max(dp[i][j-2], dp[i-1][j]);
else
dp[i][j]=dp[i][j-2];
}
}
}
return dp[s.size()][p.size()];
}
dp动态规划