Senin, 02 Juni 2014

SA post 10


#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

void HitungPinggiran(int m, char P[], int b[])
{
     int k;
     int q;
         
     b[1]=0;
     q=2;
     k=0;
     for(q=2;q<=m;q++){
                       while ((k>0) && (P[q]=!P[k+1])){
                             k=b[k];
                             }
                       if (P[q]=P[k+1]){
                                        k=k+1;
                                        }
                                        b[q]=k;
                       }
                       }
void KMPsearch(int m, int n, char P[],char T[], int idx)
{
     int i,j;
     bool ketemu;
     int b[m];
   
     HitungPinggiran(m,P,b);
     j=0;
     i=1;
     ketemu=false;
     while (i<=n && !ketemu){
           while ((j>0) && (P[j+1]=!T[i])){
                 j=b[j];
                 }
                 if (P[j+1]=T[i]){
                                  j=j+1;
                 if (j=m){
                          ketemu = true;
                          }
                 else
                 i=i+1;
                         
                          }
     if (ketemu){
                 idx=i-m+1;
                 }
                 else idx = -1;
               
                 }
                 }
               
int main(int argc, char *argv[])
{
    string T="bananananobona";
    string P="nano";
    int idx;
   
    KMPsearch(4, 14, P, T, idx);
   
    cout<<"Pattern ditemukan di index ke- "<<idx<<endl;
    system("PAUSE");
    return EXIT_SUCCESS;
}

0 comments:

Posting Komentar

"bayuaji-master.blogspot.com". Diberdayakan oleh Blogger.