求助,RE on #12
  • 板块AT_dp_f LCS
  • 楼主Yurz
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/19 20:03
  • 上次更新2024/9/19 21:29:35
查看原帖
求助,RE on #12
760954
Yurz楼主2024/9/19 20:03
#include<bits/stdc++.h>
#define ll long long
using namespace std;
string a,b;
int dp[3010][3010];
int qz[3010][3010];
char ans[3010];
int main()
{
	cin>>a>>b;
	qz[1][1]=0;
	for(int i=1;i<=a.size();i++)
	{
		for(int j=1;j<=b.size();j++)
		{			
			if(dp[i-1][j]>dp[i][j-1])
			{
				dp[i][j]=dp[i-1][j];
				qz[i][j]=(i-1)*10000+j;
			}
			else
			{
				dp[i][j]=dp[i][j-1];
				qz[i][j]=i*10000+j-1;
			}
			if(a[i-1]==b[j-1])
			{
				if(dp[i-1][j-1]+1>dp[i][j])
				{
					qz[i][j]=(i-1)*10000+j-1;dp[i][j]=dp[i-1][j-1]+1;
				}
			}
		} 
	}
	int i=a.size(),j=b.size();
	int cnt=dp[i][j];
	while(i>0&&j>0)
	{
		if(a[i-1]==b[j-1])ans[cnt--]=a[i-1];
		int x=qz[i][j];
		j=x%10000;
		i=x/10000;
	}
	for(i=1;i<=dp[a.size()][b.size()];i++)cout<<ans[i];
	return 0;
}
2024/9/19 20:03
加载中...