C语言实现最短编辑距离算法
#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; }
原文地址: https://www.cveoy.top/t/topic/o0ML 著作权归作者所有。请勿转载和采集!