编程之美--字符串相似度

void simil(char *str1,char *str2)
{
int len1=strlen(str1)+1;
int len2=strlen(str2)+1;
int **d=new int*[len1];
for(int i=0;i<len1;i++)
d[i]=new int[len2];
for(int i=0;i<len1;i++)
d[i][0]=i;
for(int j=0;j<len2;j++)
d[0][j]=j;
for(int i=1;i<len1;i++)
for(int j=1;j<len2;j++)
{
if(str1[i-1]==str2[j-1])
{
d[i][j]=d[i-1][j-1];
}
else
{
d[i][j]=min(min(d[i-1][j],d[i][j-1]),d[i-1][j-1])+1;
}
}
cout<<"dist:"<<d[len1-1][len2-1]<<endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
char str1[1000],str2[1000];
while(cin>>str1>>str2)
{
simil(str1,str2);
}
system("pause");
return 0;
}

posted @ 2012-08-21 15:22  wuzhibin  阅读(151)  评论(0编辑  收藏  举报