| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 345 人关注过本帖
标题:编辑距离
只看楼主 加入收藏
呆呆521
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-5-30
结帖率:0
收藏
 问题点数:0 回复次数:3 
编辑距离
求大神修改
int getDistance(char s1,char s2)
{  
    int len1,len2;
    len1=strlen(s1);
    len2=strlen(s2);
    int d[len1+1][len2+1];
    int i=0;,j=0;
    for(i=0;i<=len1;i++)
    {
        d[i][0]=i;
    }
    for(j=0;j<=len2;j++)
    {
        d[0][j]=j;
    }
    for(i=1;i<len1+1;i++)
    {
        for(j=1;j<len2+1;j++)
        {
             int cost = 1;  
             if(s1[i-1] == s2[j-1])
             {
                  cost=0;
             }
             int delete=d[i-1][j]+1;
             int insert=d[i][j-1]+1;
             int substitution=d[i-1][j-1]+cost;
             d[i][j]=min(delete,insert,substitution);
        }
        return(d[len1][len2]);
    }
}
int min(int d,int i,int s)
    {
        int temp=0;
        if(d>i)
           temp=i;
         else
           temp=d;
         return s<temp?s:temp;      
    }
main()
{
    char s1[] = {"kitten"};
    char s2[] ={"sitting"};
     printf(getDistance(s1,s2));
}
2015-05-07 22:34
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
不知所云

DO IT YOURSELF !
2015-05-08 08:51
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:0 
没仔细看你代码,不过有几处错误稍微改了下,你看看可以了么
程序代码:
int getDistance(char s1[],char s2[])
{ 

    int len1,len2;
    len1=strlen(s1);
    len2=strlen(s2);
    int d[len1+1][len2+1];
    int i=0,j=0;
    for(i=0;i<=len1;i++)
    {
        d[i][0]=i;
    }
    for(j=0;j<=len2;j++)
    {
        d[0][j]=j;
    }
    for(i=1;i<len1+1;i++)
    {
        for(j=1;j<len2+1;j++)
        {
             int cost = 1; 

             if(s1[i-1] == s2[j-1])
             {
                  cost=0;
             }
             int delete=d[i-1][j]+1;
             int insert=d[i][j-1]+1;
             int substitution=d[i-1][j-1]+cost;
             d[i][j]=min(delete,insert,substitution);
        }
        return(d[len1][len2]);
    }
}
int min(int d,int i,int s)
    {
        int temp=0;
        if(d>i)
           temp=i;
         else
           temp=d;
         return s<temp?s:temp;     

    }
main()
{
    char s1[] = {"kitten"};
    char s2[] ={"sitting"};
    printf("%d",getDistance(s1,s2));
} 
2015-05-08 09:04
呆呆521
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2014-5-30
收藏
得分:0 
回复 3楼 calix
还是不行
2015-05-08 13:41
快速回复:编辑距离
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015570 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved