HDU-2594-Simpsons’ Hidden Talents(KMP的next陣列應用)
博主連結
題目
題意:
給你兩個串,求第一個串的字首和第二個串的字尾的相同長度
題解:
( 這題和POJ2752基本一樣,都是利用next性質求公共前後綴 )。利用strcat(s,s1)將兩個串接起來,利用KMP的next陣列性質如果s[next[n-1]]=s[n],則此時前後綴相同,然後再開始回滾,若s[next[n-1]] == s[n-1],則子串s[0,1,2,…,next[n-1]]是滿足條件的子串。然後判斷s[next[next[n-1]]] == s[n-1]是否成立,這樣一直回滾,直到next[next[…next[n-1]]] == -1為止,這樣求出最長的長度ans,判斷ans是否大於兩個串的較短串的長度,如果大於ans=min(len1,len2);(因為如果ans大於min,則一定存在長度為min的公共前後綴)
程式碼:
#include<stdio.h> #include<bits/stdc++.h> using namespace std; const int maxn = 1e5 + 7; char s[maxn],s1[maxn]; int nex[maxn],len; void Get_Nex() { int j = -1; for (int i = 0; s[i]; i++) { while (s[i] != s[j + 1] && j != -1)j = nex[j]; if (s[i] == s[j + 1] && i != 0)j++; nex[i] = j; } } int main() { while (scanf("%s", s) != EOF) { scanf("%s", s1); int len1 = strlen(s1); int len2 = strlen(s); strcat(s, s1); len = len1 + len2; Get_Nex(); int a = nex[len - 1], ans = 0, mi = min(len1, len2); while (a != -1) { if (s[a] == s[len - 1]) { if (ans < a + 1)ans = a + 1; a = nex[a]; } } if (ans > mi)ans = mi; for (int i = 0; i < ans; i++) { putchar(s[i]); if (i == ans - 1)printf(" "); } printf("%d\n", ans); } }
相關推薦
HDU-2594-Simpsons’ Hidden Talents(KMP的next陣列應用)
博主連結 題目 題意: 給你兩個串,求第一個串的字首和第二個串的字尾的相同長度 題解: ( 這題和POJ2752基本一樣,都是利用next性質求公共前後綴 )。利用strcat(s,s1)將兩個串接起來,利用KMP的next陣列性質如果s[next[n-1]]
HDU 2594 Simpsons’ Hidden Talents(KMP)
lan hid ima .com i++ ons namespace 兩個 get http://acm.split.hdu.edu.cn/showproblem.php?pid=2594 題意:給出兩個字符串,求最長的子串使得該子串同時是第一個字符串的前綴和第二個字符串
HDU 2594 Simpsons’ Hidden Talents (字串-KMP 字首與字尾)
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total
HDU 2594 Simpsons’ Hidden Talents
mat must most min 解題思路 ann ogr amp when 題目: Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we ha
hdu2594 Simpsons' Hidden Talents【next陣列應用】
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15015
Simpsons’ Hidden Talents HDU - 2594(拓展kmp)
air hdu for mes eof turn 。。 spa algorithm Sample Input clinton homer riemann marjorie Sample Output 0 rie 3看輸出才題意。。。拓展kmp特征很明顯嘛。。。。註意開始就匹
【HDU - 1867 】A + B for you again(KMP,next陣列應用)
題幹: Generally speaking, there are a lot of problems about strings processing. Now you encounter another such problem. If you get two strings, such
HDU2594 Simpsons’ Hidden Talents 字首與字尾轉化成用s1去匹配s2
http://acm.hdu.edu.cn/showproblem.php?pid=2594 Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) &nbs
hdu2594——Simpsons’ Hidden Talents
hdu2594 題目連結:https://vjudge.net/problem/HDU-2594 這題目沒有任何技術含量。。。 翻譯:編寫一個程式,當給定字串S1和S2時,該程式查詢最長的S1字首,該字首為S2的字尾。 首先,我們可以想到,查詢兩個字串的前後綴太麻煩。 |(____)_________
hud 2594Simpsons’ Hidden Talents(kmp 字首字尾匹配 )
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14827
I - Simpsons’ Hidden Talents
Homer: Marge, I just figured out a way to discover some of the talents we weren’t aware we had. Marge: Yeah, what is it? Homer: Take me fo
HDU 3280 Equal Sum Partitions(二分查找)
pan set article for each mem bottom cstring per emp Equal Sum Partitions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768
hdu 4965 Fast Matrix Calculation(矩陣快速冪)
觀察 while code 開始 mat col power tmp style 題意: 給你一個N*K的矩陣A和一個K*N的矩陣B,設矩陣C=AB,M=C^(N*N),矩陣Mmod6後,所有數的和是多少 思路: 剛開始我是直接計算的
HDU 3340 Rain in ACStar(線段樹+幾何)
itl microsoft push php right not this string rain HDU 3340 Rain in ACStar pid=3340" target="_blank" style="">題目鏈接 題意:給定幾個多邊形(
HDU 3131 One…Two…Five! (暴力搜索)
data- pre ack cal amp names php result one 題目鏈接:HDU 3131 One…Two…Five! (暴力搜索) 題意:給出一串數字,要求用加,減,乘,除(5/2=2)連接(計算無優先級:5+3*6=8*6=48),求全部結果中
HDU 6041 I Curse Myself(二分+搜索)
class algo type ble const return highlight () != 【題目鏈接】 http://acm.hdu.edu.cn/showproblem.php?pid=6041 【題目大意】 給出一個仙人掌圖,求第k小生成樹
HDU 6073 Matching In Multiplication(拓撲排序)
str graph pop using bsp sum rod 沒有 script Matching In Multiplication Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 524288/5242
hdu 6161--Big binary tree(思維--壓縮空間)
style ons desc stream 我們 value chan 向上 while 題目鏈接 Problem Description You are given a complete binary tree with n nodes. The root no
HDU 6149 Valley Numer II(狀壓DP)
狀壓dp pac aps 狀態 01背包 using 百度 c++ 由於 題目鏈接 HDU6149 百度之星復賽的題目……比賽的時候並沒有做出來。 由於低點只有15個,所以我們可以考慮狀壓DP。 利用01背包的思想,依次考慮每個低點,然後枚
HDU 4320 Arcane Numbers 1(質因子包含)
sin puts src 無限 stream names 算術基本定理 ane 分析 http://acm.hdu.edu.cn/showproblem.php?pid=4320 題意: 給出A,B,判斷在A進制下的有限小數能否轉換成B進制下的有限小數。 思路: