關於 KMP next 陣列的應用
仔細看 這個 點選開啟連結 好好理解 next陣列的含義
POJ 2406 求最小的 迴圈節長度
#include<iostream>
#include<string.h>
#include<cstring>
#include<stdio.h>
using namespace std;
char b[1000010];
int next[1000010];
int m,n;
void g_next(int m){
int j=-1,i=0;
next[0]=-1;
while(i<m){
if(j==-1||b[j]==b[i]){
i++;
j++;
next[i]=j;
}
else{
j=next[j];
}
}
}
int main(){
while(scanf("%s",b)!=EOF){
if(b[0]=='.') break;
m=strlen(b);
g_next(m);
if(m%(m-next[m])==0){
printf("%d\n",m/(m-next[m]));
}
else{
cout<<"1"<<endl;
}
}
}
POJ 1961
#include<iostream>
#include<string.h>
#include<cstring>
#include<stdio.h>
using namespace std;
char b[1000010];
int next[1000010];
int m,n;
void g_next(int m){
int j=-1,i=0;
next[0]=-1;
while(i<m){
if(j==-1||b[j]==b[i]){
i++;
j++;
next[i]=j;
}
else{
j=next[j];
}
}
}
int main(){
int t=1;
int k;
while(cin>>k){
if(!k) break;
cin>>b;
m=strlen(b);
g_next(m);
cout<<"Test case #"<<t<<endl;
for(int j=1;j<=k;j++){
int l=j-next[j];
if(l!=j&&j%l==0){
cout<<j<<" "<<j/l<<endl;;
}
}
t++;
cout<<endl;
}
return 0;
}
POJ 2752
好好理解 next
#include<iostream>
#include<string.h>
#include<cstring>
#include<stdio.h>
using namespace std;
char b[40000010];
int next[40000010];
int ans[40000001];
int m,n;
void g_next(int m){
int j=-1,i=0;
next[0]=-1;
while(i<m){
if(j==-1||b[j]==b[i]){
i++;
j++;
next[i]=j;
}
else{
j=next[j];
}
}
}
int main(){
while(cin>>b){
m=strlen(b);
g_next(m);
int k=0;
while(m!=-1&&m!=0){
ans[k++]=m; //尋找字首和字尾相同
m=next[m];
}
for(int j=k-1;j>=0;j--){
cout<<ans[j]<<" ";
}
cout<<endl;
}
return 0;
}
相關文章
- KMP演算法中關於next陣列的探究KMP演算法陣列
- BZOJ 3670 [Noi2014]動物園 (KMP next陣列應用)KMP陣列
- KMP演算法的Next陣列詳解KMP演算法陣列
- KMP演算法的next、next value陣列的手工計算KMP演算法陣列
- KMP演算法next陣列的深入理解KMP演算法陣列
- KMP演算法以及優化(程式碼分析以及求解next陣列和nextval陣列)KMP演算法優化陣列
- kmp 演算法簡介及 next 陣列推導KMP演算法陣列
- KMP演算法中我對獲取next陣列的理解KMP演算法陣列
- KMP演算法的next、next value陣列程式碼實現及POJ3461KMP演算法陣列
- [資料結構]KMP演算法(含next陣列詳解)資料結構KMP演算法陣列
- POJ 2406-Power Strings(重複子串-KMP中的next陣列)KMP陣列
- POJ 2752+KMP+利用next陣列性質求出所有相同的字首和字尾KMP陣列
- 【譯】關於JavaScript 陣列你應該知道的事情JavaScript陣列
- 關於陣列去重陣列
- vue陣列操作遇到坑-關於陣列操作Vue陣列
- 關於在類陣列中使用陣列方法陣列
- vue 關於陣列和物件的更新Vue陣列物件
- 關於字典和陣列的疑問陣列
- RAID 磁碟陣列的應用AI陣列
- 動態record陣列的應用陣列
- 關於 JS 陣列,物件 length 使用的坑JS陣列物件
- 關於位元組陣列QByteArray陣列
- RAID磁碟陣列應用AI陣列
- LeetCode 關於陣列的相對排序LeetCode陣列排序
- JavaScript關於陣列的一些方法整理JavaScript陣列
- 深度理解vue 關於陣列和物件的更新Vue陣列物件
- VC++基礎 字串陣列的應用C++字串陣列
- 字元陣列的幾個應用函式字元陣列函式
- ORACLE 陣列在過程中的應用Oracle陣列
- C語言應用於LR中-如何得到陣列長度C語言陣列
- PHP 陣列current和next用法分享PHP陣列
- 【面試系列】之五:關於字串以及陣列的操作面試字串陣列
- c語言關於陣列的簡單運算C語言陣列
- 關於js陣列方法sort()負數排序的陷阱JS陣列排序
- 關於 FormData 物件陣列傳值總結ORM物件陣列
- 關於二維陣列指標的問題陣列指標
- 關於ES5陣列方法總結陣列
- 關於webgl的大型應用Web