1. 程式人生 > >HDU-2594-Simpsons’ Hidden Talents(KMP的next陣列應用)

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-SimpsonsHidden TalentsKMP的next陣列應用

博主連結 題目 題意: 給你兩個串,求第一個串的字首和第二個串的字尾的相同長度 題解: ( 這題和POJ2752基本一樣,都是利用next性質求公共前後綴 )。利用strcat(s,s1)將兩個串接起來,利用KMP的next陣列性質如果s[next[n-1]]

HDU 2594 SimpsonsHidden TalentsKMP

lan hid ima .com i++ ons namespace 兩個 get http://acm.split.hdu.edu.cn/showproblem.php?pid=2594 題意:給出兩個字符串,求最長的子串使得該子串同時是第一個字符串的前綴和第二個字符串

HDU 2594 SimpsonsHidden Talents 字串-KMP 字首與字尾

Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total

HDU 2594 SimpsonsHidden 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

SimpsonsHidden 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 againKMP,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 SimpsonsHidden Talents 字首與字尾轉化成用s1去匹配s2

  http://acm.hdu.edu.cn/showproblem.php?pid=2594 Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others)  &nbs

hdu2594——SimpsonsHidden Talents

hdu2594 題目連結:https://vjudge.net/problem/HDU-2594 這題目沒有任何技術含量。。。 翻譯:編寫一個程式,當給定字串S1和S2時,該程式查詢最長的S1字首,該字首為S2的字尾。 首先,我們可以想到,查詢兩個字串的前後綴太麻煩。 |(____)_________

hud 2594Simpsons’ Hidden Talentskmp 字首字尾匹配

Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14827  

I - SimpsonsHidden 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進制下的有限小數。 思路: