UVa 11475 - Extend to Palindrome

原创 2015年07月09日 17:07:08

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

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

            因為串比較長,使用KMP比較合適,KMP原理請參照AC自動機總結

說明:╮(╯▽╰)╭。

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

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;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

UVA 11475 Extend to Palindrome (kmp || manacher || 后缀数组)

题目链接:点击打开链接 题意:给你一个串,让你在串后面添加尽可能少的字符使得这个串变成回文串。 思路:这题可以kmp,manacher,后缀数组三种方法都可以做,kmp和manacher效率较高,...

UVa 11475-Extend to Palindrome JAVA

 Your task is, given an integer N, to make a palidrome (word that reads the same when y...

UVA-11475-Extend to Palindrome((扩展)kmp)

UVA-11475-Extend to Palindrome((扩展)kmp)题目: Your task is, given an integer N, to make a palidrome (w...

UVa 10739 - String to Palindrome 字符串dp

Problem H String to Palindrome Input: Standard Input Output: Standard Output Time Limit: 1 Secon...
  • cyendra
  • cyendra
  • 2013年05月02日 18:48
  • 520

uva 10739 String to Palindrome

uva 10739 String to Palindrome

UVA 10739 String to Palindrome (增删字符将非回文串串变身回文串,动态规划dp )

H - String to Palindrome Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu ...

UVA 10739 String to Palindrome

动态规划的题目,dp[i][j]表示的是将字符串从位置i到位置j的子串变为

UVA 10739--String to Palindrome +dp

字符串区间dp。 定义dp[i][j]表示将i--j之间的字符串变为回文串所需的最小步数 当str[i]==str[j]时 dp[i][j]=dp[i+1][j-1]; 当str[i]!=str[j]...
  • acm_lkl
  • acm_lkl
  • 2015年01月23日 19:33
  • 389

uva 10739 String to Palindrome (dp)

uva 10739 String to PalindromeIn this problem you are asked to convert a string into a palindrome wi...

UVA10739 String to Palindrome(区间DP + 递推)

/* Sample Input 6 tanbirahmed shahriarmanzoor monirulhasan syedmonowarhossain sadrulhabibchowdhury m...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVa 11475 - Extend to Palindrome
举报原因:
原因补充:

(最多只允许输入30个字)