hdu 4323 编辑距离(经典) 动态规划

来源:互联网 发布:网络销售最好的是什么 编辑:程序博客网 时间:2024/06/05 23:50

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4323

题目大意:给出n个字符串s1[1-n];,再给出m个  字符串和编辑距离临界值s2[1-m],kk[1-m],依次求这m个字符串与n个字符串的编辑距离小于编辑距离临界值的个数。即:s2[i]与s1[1-n]的编辑距离小于kk[i]的个数  (1<=i<=m).

注意:kk[i]的值较小,对于判断很有用,因为若字符串长度差大于kk,编辑距离必定大于kk[i];

 

#include<iostream>#include<cstdio>#include<stdlib.h>#include<string>#include<cstring>#include<cmath>#include<queue>using namespace std;int dp[20][20];char s1[1501][20];char s2[20];int len[1501];int min(int a,int b,int c){    int q=a;    if(b<q)        q=b;    if(c<q)        q=c;    return q;}int main(){    int T,n,m,kk;    int i,j,k;    int sum,ans,len1,cas=0;    scanf("%d",&T);    while(T--)    {        memset(len,0,sizeof(len));        cas++;        scanf("%d%d",&n,&m);        for(i=1;i<=n;i++)        {            scanf("%s",s1[i]+1);            len[i]=strlen(s1[i]+1);        }        printf("Case #%d:\n",cas);        for(int k1=1;k1<=m;k1++)        {            sum=0;            scanf("%s%d",s2+1,&kk);            len1=strlen(s2+1);            for(int k2=1;k2<=n;k2++)            {                if(abs(len1-len[k2])>kk) //重要的判断                    continue;                memset(dp,0,sizeof(dp));                for(i=0;i<=len1;i++)                    dp[i][0]=i;                for(j=0;j<=len[k2];j++)                    dp[0][j]=j;                for(i=1;i<=len1;i++)                {                    for(j=1;j<=len[k2];j++)                    {                        int cost;                        if(s2[i]==s1[k2][j])                            cost=0;                        else                            cost=1;                        dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]+cost);                       // dp[i][j]=min(dp[i-1][j]+1,dp[i][j-1]+1);                        //dp[i][j]=min(dp[i][j],dp[i-1][j-1]+cost);                    }                }                if(dp[len1][len[k2]]<=kk)                    sum++;            }            printf("%d\n",sum);        }    }    return 0;}


 

原创粉丝点击