题解 | #计算字符串的编辑距离#

计算字符串的编辑距离

https://www.nowcoder.com/practice/3959837097c7413a961a135d7104c314

同样经典的一道动态规划题目
主要是dp数组的计算
可以参考https://blog.csdn.net/tianjindong0804/article/details/115803158
#include<stdio.h>
#include<string.h>
int main(void)
{
    char str1[1001]={0};
    char str2[1001]={0};
    scanf("%s%s",&str1,&str2);
    int len1=strlen(str1);
    int len2=strlen(str2);
    int dp[1002][1002]={0};
    //初始化dp数组
    for(int i=0;i<=len1;i++)
    {
        dp[0][i]=i;
    }
    for(int i=0;i<=len2;i++)
    {
        dp[i][0]=i;
    }
    //开始计算dp数组
    int min=0;
    for(int i=1;i<=len2;i++)
    {
        for(int j=1;j<=len1;j++)
        {
            //此处是str1[j-1]和str2[i-1],易错,因为dp数组的行列宽度都比str大1
            if(str1[j-1]==str2[i-1]){dp[i][j]=dp[i-1][j-1];}
            else
            {
                min=dp[i-1][j-1]+1;
                if(min>(dp[i][j-1]+1)){min=(dp[i][j-1]+1);}
                if(min>(dp[i-1][j]+1)){min=(dp[i-1][j]+1);}
                dp[i][j]=min;
            }
        }
    }
    printf("%d",dp[len2][len1]);
    return 0;
}


全部评论

相关推荐

rndguy:个人思路,抛砖引玉。 要我的话我先问清楚需求:要什么精度,什么速度,什么环境。 如果精度要求很低,平台也有点柔性的话,只需要输出pwm,然后开个中断记录各多少个脉冲,如果脉冲时间不对齐了就反馈控制电流加减就行。要求同步要求稍微高点的话可以在脉冲间做个线性插值,同步精度会高些。 但总体来说,如果直流有刷只有脉冲没有好的编码器的话很难做精准定位什么的(除非用一些电机磁路结构相关的奇技淫巧如高频注入什么的),所以要求更高就需要大量参数辨识和校准,那就慢多了。
点赞 评论 收藏
分享
评论
4
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务