中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
字串定位
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
# define  MAXSTRLEN 100
int Index(char S[MAXSTRLEN],char T[MAXSTRLEN],int pos,int &time)//返回子串T在主串S中第pos個字符之后的位置
    {
      int i=pos,j=1;
                time=1;               
        while (i<=S[0]&&j<=T[0]){
                if (S[i]==T[j]){
                        ++i;
                        ++j;
                }//相等繼續(xù)比較后面字符
                else{
                        time+=1;
                        i=i-j+2;
                        j=1;
                }//指針后退重新開始匹配;
        }
        if (j>T[0])
                return i-T[0];//返回字符串的位置
        else
                return 0;//不存在返回0;
}//Index
int Index_KMP(char S[MAXSTRLEN],char T[MAXSTRLEN],int pos,int &time,int (& next)[MAXSTRLEN])
      {
        int i=pos,j=1;
        time=1;
        while(i<=S[0]&&j<=T[0]){
                if(j==0||S[i]==T[j]){
                        ++i;
                        ++j;
                }
                else {
                        time+=1;
                        j=next[j];
                        printf("j=%d",j);
                }
        }
        if(j>T[0])
                return i-T[0];
        else
                return 0;
}
void get_next(char T[MAXSTRLEN],int next[MAXSTRLEN]) //求模式串T的next函數(shù)值;
     {
       int k,i=1,j=0;
        next[1]=0;
        while(i<T[0])
             {
                if(j==0||T[i]==T[j])
                   {
                        ++i;
                        ++j;
                        next[i]=j;
                   }
              else
                         j=next[j];
            }
        for(k=1;k<=i;k++)
        printf("next[%d]=%d\n",k,next[k]);
printf("\n");
    }
void get_nextval(char T[MAXSTRLEN],int nextval[MAXSTRLEN])//求模式串T的next函數(shù)修正值并存入數(shù)組nextval;
    {
     int i=1,j=0,k;
        nextval[1]=0;
        while(i<T[0])
             {
                if(j==0||T[i]==T[j])
                   {
                        ++i;
                        ++j;
                      if (T[i]!=T[j])
                                nextval[i]=j;
                        else
                                nextval[i]=nextval[j];
                    }
                else
                        j=nextval[j];
        }
        for(k=1;k<=i;k++)
              printf("nextval[%d]=%d\n",k,nextval[k]);
         printf("\n");
     }
void string_adjust(char S[MAXSTRLEN],char T[MAXSTRLEN])
   {
    int M,N,i;
        M=strlen(S);
        N=strlen(T);
        for(i=M;i>=0;i--)
                S[i+1]=S[i];
        S[0]=M;//S[0]存放字符串M的長度;
        for(i=N;i>=0;i--)
                T[i+1]=T[i];
        T[0]=N;//T[0]存放字符串T的長度;
  }//對字符串?dāng)?shù)組進(jìn)行調(diào)整;
void main()
  {int f=1;
   int OK,time,next[MAXSTRLEN]={0},nextval[MAXSTRLEN]={0};  
    char s[MAXSTRLEN] ,t[MAXSTRLEN];
   while(f)
       {    printf("輸入主串s:");
             gets(s);
            printf("輸入模式串t:");
             gets(t);
            string_adjust(s,t);
            OK=Index(s,t,1,time);
            printf("簡單匹配算法Index的結(jié)果:\n");
              printf("比較次數(shù)為:%d\n",time);
           if (OK)
                printf("模式串t在主串s中的位置從第%d個字符開始,匹配成功\n",OK);
           else
                printf("主串S中不含模式串,模式串匹配失敗\n");
         get_next(t,next);
         get_nextval(t,nextval);
      OK=Index_KMP(s,t,1,time,next);
            printf("\n");
            printf("KMP匹配算法Index_KMP的結(jié)果:\n");
            printf("比較次數(shù)為:%d\n",time);
        if (OK)
            printf("模式串t在主串s中的位置從第%d個字符開始,匹配成功\n",OK);
        else
            printf("主串S中不含模式串,模式串匹配失敗\n");
      OK=Index_KMP(s,t,1,time,nextval);
            printf("\n");
            printf("改進(jìn)后的KMP匹配算法Index_KMP的結(jié)果:\n");
            printf("比較次數(shù)為:%d\n",time);
        if (OK)
            printf("模式串t在主串s中的位置從第%d個字符開始,匹配成功\n",OK);
        else
            printf("主串S中不含模式串,模式串匹配失敗\n");
           printf("\n");
    printf("是否繼續(xù):是:輸入1,否,輸入0\n");
    scanf("%d",&f);
      if(f)
        {
         gets(s);
        }
     }
   }
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
KMP字符串模式匹配
六之再續(xù):KMP算法之總結(jié)篇(必懂KMP)
KMP模式字符串匹配算法類封裝
kmp算法(算法是轉(zhuǎn)的) 代碼
KMP字符串匹配算法筆記
字符串模式匹配KMP算法
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服