【♂Not The Triumph♂O(∩_∩)O哈哈~But The Struggle♂】

竞赛决不是捷径,它只是另一种艰辛的生活方式。得到与失去,只有时间会去评判;成功与失败,只有历史能去仲裁。我不会永远成功,正如我不会永远失败一样

  C++博客 :: 首页 :: 联系 ::  :: 管理
  6 Posts :: 239 Stories :: 25 Comments :: 0 Trackbacks

常用链接

留言簿(7)

我参与的团队

搜索

  •  

积分与排名

  • 积分 - 104694
  • 排名 - 233

最新评论

阅读排行榜

评论排行榜

题目大意:
给你一行字符串,总共n个(1<=n<=1000),问你这串字符串中,最长的字符回文串是什么?

input:
ThesampletextthatcouldbereadedthesameinbothordersArozaupalanalapuazorA

output:
ArozaupalanalapuazorA


【参考程序】:

#include<iostream>
using namespace std;
char str[1001];
int n,start,maxs;
void func(int s,int t)
{
    
while (s>1 && t<n)
    {
        
if (str[s-1]!=str[t+1]) break;
        s
--;t++;
    }
    
if (t-s+1>maxs)
    {
        maxs
=t-s+1;
        start
=s;
    }
}
int main()
{
    freopen(
"1297.in","r",stdin);
    freopen(
"1297.out","w",stdout);
    
char c;n=0;
    
while (scanf("%c",&c)!=EOF)
    {
        n
++;str[n]=c;
    }
    maxs
=0;
    
for (int i=1;i<=n;i++) func(i,i);
    
for (int i=2;i<=n;i++)
        
if (str[i-1]==str[i])
            func(i
-1,i);
    
for (int i=start;i<=start+maxs-1;i++
        printf(
"%c",str[i]);
    printf(
"\n");
    
return 0;
}

 


 

posted on 2009-06-14 19:44 开拓者 阅读(189) 评论(0)  编辑 收藏 引用 所属分类: URAL 题解

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理