通配符

来源:互联网 发布:腾讯问卷怎么导出数据 编辑:程序博客网 时间:2024/06/15 22:30

*能匹配0个或多个字母,?能匹配任意一个字符。

#include<iostream>#include<algorithm>#include<queue>#include<string.h>#include<cstdio>using namespace std;char w[100];char s[100];bool m[51][51];int n;bool match(char *w,char *s){int i,j;for(i=0;i<=strlen(w);i++)for(j=0;j<=strlen(s);j++)m[i][j]=false;m[0][0]=true;for(i=1;i<=strlen(w);i++)for(j=0;j<=strlen(s);j++)if(w[i-1]=='*')m[i][j]=(!j)?(m[i-1][j]):(m[i][j-1]|m[i-1][j]);else if(j)if(w[i-1]=='?')m[i][j]=m[i-1][j-1];else m[i][j]=m[i-1][j-1]&(w[i-1]==s[j-1]);return m[strlen(w)][strlen(s)];}void process(){cin>>n;int i;int sum=0;for(i=0;i<n;i++){cin>>s;if(match(w,s))sum++;}cout<<sum<<endl;}int main(){while(cin>>w)process();return 0;}


原创粉丝点击