মঙ্গলবার, ৩১ জুলাই, ২০১২

UVa-11151 Longest Pallindrome


#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>

#define MAX 1005

char inp[MAX],revinp[MAX];
int c[MAX][MAX];

using namespace std;

int pal(char *inp)
{
    int M=strlen(inp);

    strcpy(revinp,inp);
    reverse(revinp,revinp+M);


    int i,j;
    for(int i=1;i<=M;i++)c[i][0]=0;
    for(int j=0;j<=M;j++)c[0][j]=0;

    for(i=1;i<=M;i++)
        for(j=1;j<=M;j++)
           {
               if(inp[i-1]==revinp[j-1])c[i][j]=c[i-1][j-1]+1;
               else if(c[i-1][j]>=c[i][j-1])c[i][j]=c[i-1][j];
               else c[i][j]=c[i][j-1];
           }
           return c[M][M];
}
int main()
{
    int tc;
    bool signal=false;
    cin>>tc;
    tc+=1;

        while(tc--){ int len;

                                                //scanf("%s",&inp);
                       gets(inp);
                        if(signal==false){signal=true;continue;}

                       if(strcmp("\n",inp)==0)len=0;
                       else  len=pal(inp);
                      cout<<len<<endl;
                     }
                    return 0;

}

কোন মন্তব্য নেই:

একটি মন্তব্য পোস্ট করুন