博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVa 11475 - Extend to Palindrome
阅读量:6327 次
发布时间:2019-06-22

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

題目:給你一個字符串,在後面拼接一部分使得它變成回文串,使得串最短。輸出這個回文串。

分析:KMP,dp。這裡利用KMP算法將串和它的轉置匹配,看結束時匹配的長度就可以。

            因為串比较長。使用KMP比较合適,KMP原理請参照。

說明:╮(╯▽╰)╭。

#include 
#include
#include
char strA[100001];char strB[100001];int next[100001];void getnext(char T[]) { next[0] = -1; int i = 0, j = -1; while (T[i]) { if (j == -1 || T[i] == T[j]) { ++ i; ++ j; if (T[i] != T[j]) next[i] = j; else next[i] = next[j]; }else j = next[j]; }} int KMP(char S[], char T[]){ int i = 0, j = 0; while (S[i]) { if (j == -1 || S[i] == T[j]) { i ++; j ++; }else j = next[j]; } return j;}int main(){ while (~scanf("%s",strA)) { int len = strlen(strA); for (int i = 0; i < len; ++ i) strB[i] = strA[len-1-i]; strB[len] = 0; getnext(strB); printf("%s%s\n",strA,&strB[KMP(strA, strB)]); } return 0;}

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

你可能感兴趣的文章
获取文本区域(textarea)行数【换行获取输入用户名个数】
查看>>
Mysql常用命令详解
查看>>
Android中实现iPhone开关
查看>>
是男人就下100层【第二层】——帮美女更衣(1)
查看>>
Web应用程序设计十个建议
查看>>
//……关于报文
查看>>
C语言学习-进制转换、变量
查看>>
Base64编码及其作用
查看>>
20172304 2017-2018-2 《程序设计与数据结构》实验五报告
查看>>
第六周学习总结
查看>>
20个数据库设计的最佳实践
查看>>
C# async
查看>>
C语言博客作业02--循环结构
查看>>
图片时钟
查看>>
Unity-2017.3官方实例教程Space-Shooter(一)
查看>>
makefile中重载与取消隐藏规则示例
查看>>
Linux 内核版本号查看
查看>>
4-3 简单求和 (10分)
查看>>
Python环境部署
查看>>
[BZOJ1927]星际竞速(费用流)
查看>>