蒟蒻初学DP,34分求助
查看原帖
蒟蒻初学DP,34分求助
409774
Maysoul楼主2022/7/20 19:26

RT

#include<bits/stdc++.h>
//#define int long long
#define ll long long
#define next nxt;
#define re register
using namespace std;
const int MAXN=2010;
int read()
{
	int f=0,s=0;
	char ch=getchar();
	for(;!isdigit(ch);ch=getchar()) f |= (ch=='-');
	for(; isdigit(ch);ch=getchar()) s = (s<<1) + (s<<3) + (ch^48);
	return f ? -s : s;
}
int f[MAXN][MAXN];
int main()
{
	int n,m;
	string a,b;
	a=read(),b=read();
	n=a.length();
	m=b.length();
	memset(f,0x3f,sizeof(f));
	f[0][0]=0;
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=m;j++) 
		{
			if(a[i]==b[j])
			{
				f[i][j]=min(f[i][j],f[i-1][j-1]);
			}
			f[i][j]=min(f[i][j],f[i-1][j]+1);
			f[i][j]=min(f[i][j],f[i][j-1]+1);
			f[i][j]=min(f[i][j],f[i-1][j-1]+1);
		}
	}
	cout<<f[n][m]<<endl;
} 
2022/7/20 19:26
加载中...