博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 3068 最长回文(manacher算法)
阅读量:6375 次
发布时间:2019-06-23

本文共 827 字,大约阅读时间需要 2 分钟。

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3068

题意:求最长回文串。

思路:

将串之间插入串中没有出现过的字符,这样不管原来的串的长度是奇数还是偶数现在都是奇数。以下我们都是针对新的串而言。设rad[i]表示以位置i为中心,半径为rad[i]的串为回文串,即S[i-rad[i],i-1]=S[i+1,i+rad[i]]。现在我们假设已经求出了0到i位置的rad值,现在用i位置的rad值求后面的位置i+k的rad值,

char s1[N];int rad[N],len;//最长回文串//串str,长度len(str[0]~str[len-1])//回文串的起始位置start和长度sum//rad[i]表示i位置回文串的半径char s[N];void manacher(char s1[],int len,int &start,int &sum,int rad[]){    int i,j=0,k;    FOR0(i,len) s[j++]='#',s[j++]=s1[i];    s[j++]='#'; len=2*len+1; i=0,j=1;    clr(rad,0);    while(i
=0&&i+j
ans) { ans=rad[i]; pos=i; } sum=ans; start=pos/2-ans/2;}int main(){ while(scanf("%s",s1)!=-1) { int start,ans; len=strlen(s1); manacher(s1,len,start,ans,rad); PR(ans); } return 0;}

  

转载地址:http://bqtqa.baihongyu.com/

你可能感兴趣的文章
关于Tomcat上请求的编解码问题
查看>>
WPF“动画序列”框架的初步研究与实现(附源码)
查看>>
Windows Server 2008 多元密码策略配置
查看>>
.NET中的泛型和Java泛型中的类型擦除
查看>>
白利用的集大成者:新型远控木马上演移形换影大法
查看>>
SAS 2016年全球营收达32亿美元 继续保持稳步增长
查看>>
2017必备的八款最佳反勒索软件工具
查看>>
从Effective Java总结一些有助安卓开发的建议
查看>>
以一当十的程序员不是传说
查看>>
Vizinex RFID 和Brady SmartID推出航空标签
查看>>
Facebook 否认趋势话题存在政治偏见,但将做出调整
查看>>
云纵发布“纵横客“ 新一代互联网CRM开启餐饮行业营销新模式
查看>>
物联网到底何时才能称为“爆发”?
查看>>
《Java多线程编程核心技术》——1.2节使用多线程
查看>>
不用惊慌 关于苹果警告的一些分析
查看>>
《VMware 网络技术:原理与实践》—— 2.3 OSI模型
查看>>
金融安全资讯精选 2017年第十五期:普华永道消费者隐私信息保护调研称69%的企业无力面对网络攻击,中小银行转型系统整合中的建议...
查看>>
读书笔记之《实战Java虚拟机》(9):Class 文件结构
查看>>
面对区块链这项全新的技术,传统投资产生了焦虑
查看>>
1024城市峰会 | 当A.I.邂逅古都西安
查看>>