dp--编辑距离

来源:互联网 发布:vm虚拟机 数据 共享 编辑:程序博客网 时间:2024/05/21 19:38

编辑距离:使一个字符串变成另一个字符串所需要的最少步骤.

#include<cstring>#include<cstdio>#include<algorithm>using namespace std;char str1[1010];char str2[1010];int dp[1010][1010];//表示s的前i位和t的前j位对齐扣得最少的分 int main(){    scanf("%s %s", str1+1, str2+1);    str1[0] = str2[0] = '0';    int len1 = strlen(str1)-1;    int len2 = strlen(str2)-1;    for(int i = 0; i <= max(len1,len2); i++)//初始赋值     dp[0][i] = dp[i][0] = i;    for(int i = 1; i <= len1; i++)    {        for(int j = 1;j <= len2; j++)        {            if(str1[i] == str2[j])            dp[i][j] = dp[i-1][j-1];            else            dp[i][j] = dp[i-1][j-1] + 1;            dp[i][j] = min(min(dp[i-1][j]+1,dp[i][j-1]+1),dp[i][j]);        }    }    printf("%d\n",dp[len1][len2]);     return 0;} 
原创粉丝点击