编辑代码

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int* KMP_Next(char*,int&);
int Chuan_KMP(char*,char*);
int main() {
    char String_rands[100];
    for(int i=0; i < 100; i++)
        String_rands[i] = 97 + rand()%26;
    String_rands[99] = '\0';
    cout<<String_rands;
    cout<<endl;
    for(int i = 0; i < 19; i++)
    cout<<'-';
    cout<<endl;
    int num = 0;
    int *t = KMP_Next("ababaaababaa\0",num);
    for(int i = 0 ; i < num-1 ; i ++)
        cout<<t[i];

    //程序运行完成时一定要有输出语句,本工具才能正确展示运行结果。 
	cout << "Hello JSRUN!   \n\n         - from C++ ." << endl;
	return 0;
}
int KMP_PD(char* a,char* b,int num){
    for(int i = 0; i < num ; i ++){
        if(a[i]!=b[i]) return 0;
    }
    return 1;
}
int* KMP_Next(char* str1,int& i){
    while(str1[i++]!='\0');
    int* Sum = new int[i];
    for(int j = 0;j<i-1;j++){
        int num = 0;
        for(int k = 0; k < j;k++)
            if(KMP_PD(&str1[0],&str1[j-k],k+1)) num=k+1;
        Sum[j+1] = num+1;
    }
    Sum[0] = 0;
    return Sum;
}

int Chuan_KMP(char* a,char *b){
    
    
    return -1;
}