【KMP思想求迴圈節】hdu 1358 hust 1010 poj 2406
字串的迴圈節為 字串長度減去字串最長公共前字尾的長度。
hdu 1358
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<stack>
#include<queue>
#include<deque>
#include<map>
#include<algorithm>
using namespace std;
typedef long long LL;
//#pragma comment(linker, "/STACK:102400000,102400000")
/*
HDU - 3746
給出一個字串,問還需要在後面新增多少個字元才能使它變成由一個字首迴圈多次而成
無非求一個next[n]
*/
const double PI = acos(-1.0);
const double eps = 1e-6;
const int INF=0x3f3f3f3f;
const int mod = 1e9;
const int N = 100010;
char s[N];
int nex[N];
void getnext(char *p)
{
int len = strlen(p);
int k = -1;
nex[0] = k;
for(int i = 1; i < len; i++)
{
while(k!=-1 && p[i]!=p[k+1])
k = nex[k];
if(p[i]==p[k+1])
k++;
nex[i] = k;
}
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s",s);
getnext(s);
int len = strlen(s);
int x = nex[len-1]+1;
x = len-x;
if(x == len)
{
printf("%d\n",x);
continue;
}
if(len%x == 0)
puts("0");
else
printf("%d\n",x-len%x);
}
return 0;
}
其他兩題沒什麼變化。
相關文章
- HUST 1010-The Minimum Length-KMPKMP
- POJ--2406Power Strings+KMP求字串最小週期KMP字串
- HDU 4291 A Short problem(矩陣快速冪+迴圈節)矩陣
- POJ 2406-Power Strings(重複子串-KMP中的next陣列)KMP陣列
- 【KMP求字串匹配次數】 hdu 1686KMP字串匹配
- POJ 3461 kmpKMP
- POJ2752--KMP求所有可能的相同字首字尾KMP
- 【KMP求字串第一個匹配位置】hdu 1711KMP字串
- HDU2813Interesting Fibonacci(斐波那契數列+迴圈節)REST
- HDU 2594 (KMP入門)KMP
- 2397 求最大值 迴圈
- 【Kmp求既是字首又是字尾的子串】POJ - 2752 Seek the Name, Seek the FameKMP
- poj3080-kmp+列舉子串 求最長公共子串KMP
- HDU 1711 Number Sequence(KMP)KMP
- POJ 1026-Cipher(置換群-K次置換 取模迴圈節長度)
- 關於一個迴圈請求與迴圈計時器的問題
- 【Kmp】Blue Jeans POJ - 3080KMP
- HDU 2203(KMP) 親和串KMP
- JavaScript的map迴圈、forEach迴圈、filter迴圈、reduce迴圈、reduceRight迴圈JavaScriptFilter
- 【總結】理解KMP演算法思想KMP演算法
- YT14-HDU-找迴圈節 (關於std::ios::sync_with_stdio(false);的作用和疑問)iOSFalse
- 第十九節:Java基本資料型別,迴圈結構與分支迴圈Java資料型別
- 迴圈請求報204問題分析
- POJ 1261 Period KMP (字串週期)KMP字串
- 迴圈佇列的實現及細節佇列
- C語言——迴圈結構(for迴圈,while迴圈,do-while迴圈)C語言While
- manacher || 擴充套件kmp -- Best Reward HDU - 3613套件KMP
- HDU 4668 Finding string (解析字串 + KMP)字串KMP
- iOS for 迴圈內網路請求的處理iOS內網
- 無限for迴圈(死迴圈)
- SQL 遞迴思想SQL遞迴
- 複習下C 連結串列操作(雙向迴圈連結串列,查詢迴圈節點)
- while迴圈以及do while迴圈While
- 迴圈
- if迴圈
- 3.4 spring5原始碼系列--迴圈依賴的設計思想Spring原始碼
- 04流程控制 for迴圈,while迴圈While
- Poj--3080Blue Jeans+KMP水題KMP