#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
char dp_match( const char *str1, const char *str2)
{
int slen1 = strlen(str1);
int slen2 = strlen(str2);
char match[100][100];
memset(match, 0, 100*100);
match[0][0] = 1;
int i, j, k, m;
for(i=1; i<=slen1; ++i)
{
for(j=1; j<=slen2; ++j)
if(match[i-1][j-1])
if(str1[i-1]==str2[j-1] || str2[j-1]=='?')
match[i][j]=1;
else if(str2[j-1]=='*')
for(k=i-1; k<=slen1; ++k)
match[k][j] = 1;
for(k=1; k<=slen2; ++k)
if(match[i][k])
break;
if(k>slen2) return 0;
}
return match[slen1][slen2];
}
int main()
{
int tmp=0;
char list1[100],list2[100];
cin>>list1>>list2;
tmp=dp_match(list1,list2);
cout<<tmp;
system("PAUSE");
}
原帖地址:http://community.youkuaiyun.com/Expert/topic/3937/3937794.xml?temp=.4352838