题目:http://pat.zju.edu.cn/contests/pat-a-practise/1040
题意:求解最长回文子序列长度。
思路:时间匆忙,先贴上最笨的方法:暴力!
代码:
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
using namespace std;
int main()
{
char s1[1100],s2[1100];
int i,j,k,count,maxx;
gets(s1);
int len=strlen(s1);
if(len==0) {printf("0\n");return 0;}
if(len==1) {printf("1\n");return 0;}
for(i=len-1;i>=0;i--)
s2[len-1-i]=s1[i];
s2[len]='\0';
maxx=1;
for(i=0;i<len-1;i++)
{
for(j=0;j<len-1-i;j++)
if(s1[i]==s2[j])
{
count=1;
for(k=i+1;k<len-j;k++)
{
if(j+k-i>len-1-i) break;
if(s1[k]==s2[j+k-i]) count++;
else break;
}
if(count>maxx) maxx=count;
}
}
printf("%d\n",maxx);
return 0;
}