欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次

直接上代碼

復(fù)制代碼 代碼如下:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

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

typedef unsigned char SString[MAX_SIZE];//數(shù)組第一個保存長度
//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算法:%d\n", a);
    }
    else
    {
        printf("未匹配\n");
    }

    if(b != -1)
    {
        printf("使用KMP算法:%d\n", a);
    }
    else
    {
        printf("未匹配\n");
    }

    system("pause");
}

結(jié)果

復(fù)制代碼 代碼如下:

請輸入模式串:lalalalalaaaa
請輸入子串:lalaa
使用BF算法:6
使用KMP算法:6
請按任意鍵繼續(xù). . .

上一篇:C++設(shè)計類不能被繼承的方法實例講解

欄    目:C語言

下一篇:C++Zip壓縮解壓縮示例(支持遞歸壓縮)

本文標題:c語言中使用BF-KMP算法實例

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/3886.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請與我們聯(lián)系,我們將在24小時內(nèi)進行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有