<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

          <p id="bbfd9"><cite id="bbfd9"></cite></p>

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
            C語言

            c語言中使用BF-KMP算法實例

            時間:2025-01-16 07:27:05 C語言 我要投稿
            • 相關推薦

            c語言中關于使用BF-KMP算法實例

              直接上代碼

              復制代碼 代碼如下:

              #define _CRT_SECURE_NO_WARNINGS

              #include

              #include

              #include

              #define MAX_SIZE 255 //定義字符串的最大長度

              typedef unsigned char SString[MAX_SIZE];//數組第一個保存長度

              //BF

              int BFMatch(char *s,char *p)

              {

              int i,j;

              i=0;

              while(i < strlen(s))

              {

              j=0;

              while(s[i]==p[j]&&j < strlen(p))

              {

              i++;

              j++;

              }

              if(j==strlen(p))

              return i-strlen(p);

              i=i-j+1; //指針i回溯

              }

              return -1;

              }

              //getNetx

              void getNext(char *p,int *next)

              {

              int j,k;

              next[0]=-1;

              j=0;

              k=-1;

              while(j < strlen(p)-1)

              {

              if(k==-1||p[j]==p[k]) //匹配的情況下,p[j]==p[k]

              {

              j++;

              k++;

              next[j]=k;

              }

              else

              { //p[j]!=p[k]

              k=next[k];

              }

              }

              }

              //KMP

              int KMPMatch(char *s,char *p)

              {

              int next[100];

              int i,j;

              i=0;

              j=0;

              getNext(p,next);

              while(i < strlen(s))

              {

              if(j==-1||s[i]==p[j])

              {

              i++;

              j++;

              }

              else

              {

              j=next[j]; //消除了指針i的回溯

              }

              if(j==strlen(p))

              {

              return i-strlen(p);

              }

              }

              return -1;

              }

              int main()

              {

              int a, b;

              char s[MAX_SIZE], p[MAX_SIZE];

              printf("請輸入模式串:");

              scanf("%s", &s);

              printf("請輸入子串:");

              scanf("%s", &p);

              a = BFMatch(s, p);

              b = KMPMatch(s, p);

              if(a != -1)

              {

              printf("使用BF算法:%dn", a);

              }

              else

              {

              printf("未匹配n");

              }

              if(b != -1)

              {

              printf("使用KMP算法:%dn", a);

              }

              else

              {

              printf("未匹配n");

              }

              system("pause");

              }

              結果

              復制代碼 代碼如下:

              請輸入模式串:lalalalalaaaa

              請輸入子串:lalaa

              使用BF算法:6

              使用KMP算法:6

              請按任意鍵繼續. . .

            【c語言中使用BF-KMP算法實例】相關文章:

            C語言冒泡排序算法實例06-15

            C語言中使用快速排序算法對元素排序的實例06-20

            C語言中實現KMP算法實例08-09

            C語言奇偶排序算法詳解及實例代碼10-30

            C語言選擇排序算法及實例代碼07-25

            C語言插入排序算法及實例代碼07-02

            Swift與C語言指針結合使用實例09-21

            C語言實現歸并排序算法實例09-18

            C++選擇排序算法實例09-26

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

                    <p id="bbfd9"><cite id="bbfd9"></cite></p>

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院