#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"); }

评论