#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
博客给出了一段字符匹配算法的代码。代码中定义了 dp_match 函数用于实现字符匹配逻辑,通过动态规划的方式处理字符匹配情况,在 main 函数中获取输入并调用该函数进行匹配,最后输出匹配结果。
664

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



