样例:
input:
3
abc
abbab
ababbbac
output:
case #0:
1
case #1:
4
case #2:
5
思路:
emmm在dp方面真的是个蒟蒻,啥也不会…
状态转移方程:
cnt[i][j]=cnt[i+1][j-1]
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int maxn=222;
int n;
char a[maxn],cnt[maxn][maxn];
void palindrome(char a[])
{
int l=strlen(a);for(int i=0;i<l;i++){
if(a[i]==a[i+1]){
cnt[i][i+1]=1;cnt[i+1][i]=1;}cnt[i][i]=1;}int cntt=1;for(int i=l-2;i>=0;i--){
for(int j=i+1;j<l;j++){
if(a[i]!=a[j]) cnt[i][j]=0;else{
cnt[i][j]=cnt[i+1][j-1];if(cnt[i][j]){
cntt=max(cntt,j-i+1);//cout<<"i="<<i<<" "<<"j="<<j<<" "<<"cnt="<<cntt<<endl;} }}}cout<<cntt<<endl;
}
int main()
{
cin>>n;for(int i=1;i<=n;i++){
cin>>a;cout<<"case #"<<i-1<<":"<<endl;//cout<<a<<endl;palindrome(a);}return 0;
}