通配符的匹配,dp
#include<stdio.h>
#include<string.h>
#define N 110
bool match(char *p,char *s)
{
int i,j,k,dp[N][N];
int plen=strlen(p+1),
slen=strlen(s+1);
for(i=0;i<=plen;++i)
for(j=0;j<=slen;++j)
{
if(i==0&&j==0)
dp[i][j]=1;
else if(p[i]==s[j])
dp[i][j]=dp[i-1][j-1];
else if(p[i]=='*')
{//遇到*的时候往前遍历查看是否有一个和i-1可以匹配的j位置,若有,则dp[i][j]=1
dp[i][j]=0;
for(k=j;k>=0;--k)
if(dp[i-1][k])
博客探讨了如何使用通配符(如星号 * 和问号 ?)进行模式匹配,并介绍了动态规划(dp)在解决此类问题中的应用。
订阅专栏 解锁全文
447

被折叠的 条评论
为什么被折叠?



