求调
查看原帖
求调
648756
Shadow_Lord楼主2022/10/22 21:31
#include<bits/stdc++.h>
using namespace std;
string a,b,c,ans[101][101][101];
int f[101][101][101];
signed main()
{
	cin>>a>>b>>c;
	for(int i=1;i<=a.size();i++)
	{
		for(int j=1;j<=b.size();j++)
		{
			for(int z=1;z<=c.size();z++)
			{
				if(a[i-1]==b[j-1]&&b[j-1]==c[z-1])
				{
					
					if(f[i-1][j-1][z-1]+1>f[i][j][z])
					{
						ans[i][j][z]=ans[i-1][j-1][z-1]+a[i-1];	
						f[i][j][z]=f[i-1][j-1][z-1]+1;
						//cout<<"1\n";
					}
				}
				else 
				{
					f[i][j][z]=max(f[i-1][j-1][z-1],f[i][j][z]);
					int p=max(max(f[i-1][j][z],f[i][j-1][z]),f[i][j][z-1]);
					if(p==f[i-1][j][z])
					{
						ans[i][j][z]=ans[i-1][j][z];
					}
					else if(p==f[i][j-1][z])
					{
						ans[i][j][z]=ans[i][j-1][z];
					}else if(p==f[i][j][z-1])
					{
						ans[i][j][z]=ans[i][j][z-1];
					}

				}
			}
		}
	}
	cout<<ans[a.size()][b.size()][c.size()];
	return 0;
}
2022/10/22 21:31
加载中...