#include<stdio.h>

#include <string.h>

#define MAXX 51

#define MAXY 51 //问题表示

int m,n; //求解结果表示

int dp[MAXX][MAXY];

char s1[MAXX], s2[MAXY];

void solve() { int i,j;

dp[0][0]=0;

memset(dp,0,sizeof(dp));

for(i=1;i<=m;i++)
    dp[i][0]=i;

for(j=1;j<=n;j++)
    dp[0][j]=j;

for(i=1;i<=m;i++)
{
    for(j=1;j<=n;j++)
    {
        if(s1[i-1]==s2[j-1])
            dp[i][j]=dp[i-1][j-1];
        else
            dp[i][j]=1+min(dp[i-1][j],dp[i][j-1]);
    }
}

printf('%d',dp[m][n]);

}

int min(int a, int b) { return a<b?a:b; }

int main() { scanf('%s',s1); scanf('%s',s2); m = strlen(s1); n = strlen(s2); solve(); return 0; }

C语言实现最短编辑距离算法

原文地址: https://www.cveoy.top/t/topic/o0ML 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录