88的雷达114514114514

yang_zhiyu 2023-12-16 10:02:17

#include<iostream>
#include<cstring>
using namespace std;
string A,B;
char s1[2005],s2[2005];
int edit[2005][2005];

int dp(int i,int j)
{ 
    if(edit[i][j]!=-1) 
	{
		return edit[i][j]; 
	}
    if(i==0)
	{
		return edit[i][j]=j;
	} 
    if(j==0)
	{
		return edit[i][j]=i;
	} 
    int bonus=1;
    if(s1[i]==s2[j])
	{
		bonus=0; 
	}  
    return edit[i][j]=min(min(dp(i-1,j)+1,dp(i,j-1)+1),dp(i-1,j-1)+bonus);
}

int main()
{
    cin>>A>>B;
    memset(edit,-1,sizeof(edit));
    int len1=A.length(),len2=B.length();
    for(int i=1;i<=len1;i++ )
	{
		s1[i]=A[i-1];
	} 
    for(int i=1;i<=len2;i++)
	{
		s2[i]=B[i-1];
	} 
    dp(len1,len2);
    cout<<edit[len1][len2];
    return 0;
}