zoukankan      html  css  js  c++  java
  • UVa 11475

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

    分析: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
    ",strA,&strB[KMP(strA, strB)]);
    	}
        return 0;
    }
    


  • 相关阅读:
    荣岩岩作业10
    荣岩岩作业9
    荣岩岩作业8
    荣岩岩作业7
    荣岩岩作业6
    荣岩岩作业5
    荣岩岩作业4
    list<T>与datatable互相转换
    IE缓存机制
    html界面添加判断
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7091734.html
Copyright © 2011-2022 走看看