求助最长回文子序列
  • 板块灌水区
  • 楼主i_am_a_joker
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/8/11 22:45
  • 上次更新2023/10/27 15:51:42
查看原帖
求助最长回文子序列
245089
i_am_a_joker楼主2022/8/11 22:45

RT,有T组数据,这是我的代码,wa了一个点

#include<bits/stdc++.h>
using namespace std;
int t;
int a[2000005];
int f[2000005];
//dfs(i,j)表示i~j最长回文子序列的长度
//dfs(i,j) = dfs(i+1,j-1)+2  {s[i] == s[j]}
//         = max(dfs(i+1,j),dfs(i,j-1)) {s[i] != s[j]}
int dfs(int a[],int l,int r)
{
	if(l == r) return 1;
	if(l > r) return 0;
	if(a[l] == a[r])
	{
		return dfs(a,l+1,r-1)+2;	
	}
	int sum1 = dfs(a,l,r-1),sum2 = dfs(a,l+1,r);
	return max(sum1,sum2);
} 
int main()
{
	cin>>t;
	while(t--)
	{
		int n; cin>>n;
		for(int i=1; i<=n; i++) cin>>a[i];
		cout<<dfs(a,1,n)<<endl;		
	}
	return 0;	
} 
2022/8/11 22:45
加载中...