#include<bits/stdc++.h>
using namespace std;
long dp[1001][1001];
string s;
long call(long i,long j)
{
if(i>j)return 0;
if(i==j)return 1;
if(dp[i][j]!=-1)return dp[i][j];
long res=0;
if(s[i]==s[j])
res=call(i+1,j-1)+2;
else
res=max(call(i+1,j),call(i,j-1));
return dp[i][j]=res;
}
int main()
{
long cs,tst,p,l;
cin>>cs;
getchar();
for(tst=0;tst<cs;tst++)
{
memset(dp,-1,sizeof(dp));
getline(cin,s);
l=s.size()-1;
p=call(0,l);
cout<<p<<endl;
}
return 0;
}
using namespace std;
long dp[1001][1001];
string s;
long call(long i,long j)
{
if(i>j)return 0;
if(i==j)return 1;
if(dp[i][j]!=-1)return dp[i][j];
long res=0;
if(s[i]==s[j])
res=call(i+1,j-1)+2;
else
res=max(call(i+1,j),call(i,j-1));
return dp[i][j]=res;
}
int main()
{
long cs,tst,p,l;
cin>>cs;
getchar();
for(tst=0;tst<cs;tst++)
{
memset(dp,-1,sizeof(dp));
getline(cin,s);
l=s.size()-1;
p=call(0,l);
cout<<p<<endl;
}
return 0;
}
কোন মন্তব্য নেই:
একটি মন্তব্য পোস্ট করুন