样例过不去求调
查看原帖
样例过不去求调
376997
Harry27182SDream楼主2022/7/3 08:01

rt

#include<bits/stdc++.h>
using namespace std;
int q,n,m,res,f[405][405];
char s[405],t[405];
bool dp(int k)
{
	memset(f,0,sizeof(f));
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=k&&j<=i;j++)
		{
			f[i][j]=max(f[i][j],f[i-1][j]);
			if(s[i]==t[j])f[i][j]=max(f[i][j],f[i-1][j-1]);
			if(s[i]==t[k+f[i-1][j]+1])f[i][j]=max(f[i][j],f[i-1][j]+1);
		}
	}
	int ans=0;
	for(int i=1;i<=k;i++)ans=max(ans,i+f[n][i]);
	return ans==m;
}
int main()
{
	scanf("%d",&q);
	while(q--)
	{
		scanf("%s%s",s+1,t+1);//f[i][j]表示选了s前i位,前半段选j个,后半段最大
		n=strlen(s+1);m=strlen(t+1);res=0;
		for(int i=1;i<=m;i++)res|=dp(i);
		if(res)printf("YES\n");
		else printf("NO\n");
	} 
	return 0;
}
2022/7/3 08:01
加载中...