各位大佬帮忙看看这道题用c语言或c++怎么写?
回文字符串就是从前往后读和从后往前读都一样的字符串。比如 abcba, aaa, QoQ。现在给你一个字符串,你可以从中删去一些字符,在不改变原来字符相对顺序的情况下,得到一个最长的回文字符串。比如 abxdba, 删去字符 x 后,可以得到 abdba,是一个回文字符串。你的任务就是求出给定的字符串删去若干字符后可以得到的最长的回文字符串的长度。字符串长度不超过 1000,字符范围为 ‘a’ 到 ‘z’。
输入描述
有多组输入。
每组一行字符串。
输出
每组测试数据输出一个整数,表示可以得到的最长的回文字符串的长度。
样例输入
aabbaabb
computer
abzla
samhita
样例输出
6
1
3
3 本帖最后由 jhq999 于 2022-6-4 21:19 编辑
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int i=0,j=0,k=0,len=0,count=0,max1=0,max2=0,half=0,r=0;
char str={0};
scanf("%s",str);
for(len=0;str;len++);
for(i=0;i<len;i++)//////
{
count=0;
r=i+1;
for(j=i;j>=0;j--)
{
for(k=r;k<len;k++)
{
if(str==str)
{
count++;
r=k+1;
break;
}
}
}
printf("%d%d,",count,i);
if(max1<=count)max2=max1,max1=count,half=i;
}
max1*=2;
max2*=2;
if(max2==max1)max1+=1;
printf("%d %d%d",len,max1,max2);
return 0;
}
页:
[1]