简单DP求助
  • 板块P2758 编辑距离
  • 楼主K_J_M
  • 当前回复7
  • 已保存回复7
  • 发布时间2024/8/22 15:12
  • 上次更新2024/8/22 16:47:04
查看原帖
简单DP求助
1353330
K_J_M楼主2024/8/22 15:12
#include<bits/stdc++.h>
using namespace std;
const int N =2e3+10;
string a,b;
int n,m;
int dp[N][N];
int main(){
	cin>>a>>b;
	n=a.size(),m=b.size();
	a=" "+a,b=" "+b;
	memset(dp,0x3f,sizeof(dp));
	dp[1][1]=(!(a[1]==b[1]));
	dp[2][1]=min((!(a[2]==b[1]))+1,(!(a[1]==b[1]))+1);
	dp[1][2]=min((!(a[1]==b[2]))+1,(!(a[1]==b[1]))+1);
	for(int i=2;i<=n;i++){
		for(int j=2;j<=m;j++){
			if(a[i]==b[j]) dp[i][j]=min(dp[i][j],dp[i-1][j-1]);
			dp[i][j]=min(min(min(dp[i][j-1]+1,dp[i-1][j]+1),dp[i-1][j-1]+1),dp[i][j]);
		}
	}
	cout<<dp[n][m];
	return 0;
}

WA ON #3 #6

2024/8/22 15:12
加载中...