• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            DraculaW

              C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              19 隨筆 :: 0 文章 :: 7 評論 :: 0 Trackbacks
            template<typename T>
            void prefix(T* p, int m, int* next)
            {
                   int i, j;
                   i = 0;
                   j = next[0] = -1;
                   while (i < m) {
                       while (j > -1 && p[i] != p[j])
                                 j = next[j];
                       i++;
                       j++;
                       if (p[i] == p[j])
                                 next[i] = next[j];
                       else
                                 next[i] = j;
                   }
            }
            /* ---------- end of function prefix ---------- */

            /*****************************************************************************
            * Function : KMP                                                            *
            * T     *t : The string need be matching                                    *
            * int    n : The length of the string                                       *
            * T     *p : The sub string to matching                                     *
            * int    m : The length of the p                                            *
            * int *out : An array mark the string match where ( max length is m - n )   *
            *****************************************************************************/
            template<typename T>
            int KMP(T* t, int n, T* p, int m, int* out)
            {
                      int c = 0;
                int i, j, next[m];
                prefix(p, m, next);
                i = 0;
                j = 0;
                while(i < n)
                {
                    while( j > -1 && p[j] != t[i])
                        j = next[j];
                    i++; j++;
                    if( j >= m )
                    {       
                        out[c++] = i - m;
                        j = next[j];
                    }
                }
                      return c;
            }
            /* ---------- end of function KMP ---------- */

            // 這個算法 也研究了很久了。對于他的原理 我早已經清楚,但是快速的寫出他還是不是那么順利。也是因為我寫的程序太少了吧 呵呵。 理解中記憶。 嗯 不能死記硬背啊 呵呵。
            posted on 2007-11-15 20:36 DraculaW 閱讀(91) 評論(0)  編輯 收藏 引用
            伊人久久大香线蕉精品不卡 | 久久亚洲综合色一区二区三区 | 亚洲AV无码1区2区久久| 伊人色综合九久久天天蜜桃| 伊人久久大香线蕉综合5g| 亚洲国产另类久久久精品| 久久久久高潮毛片免费全部播放 | 久久只这里是精品66| 久久天天躁狠狠躁夜夜躁2014| 亚洲国产精品成人AV无码久久综合影院 | 亚洲国产成人久久精品99 | 99久久精品费精品国产| 老司机午夜网站国内精品久久久久久久久| 四虎影视久久久免费观看| 久久久无码精品亚洲日韩蜜臀浪潮| 久久精品国产亚洲AV无码麻豆| 精品国产婷婷久久久| 国内精品久久久久影院老司| 国产精品免费福利久久| 日韩欧美亚洲综合久久影院Ds | 久久人人爽人人爽人人片AV不| 国产精品免费福利久久| 综合久久一区二区三区| 狠狠色伊人久久精品综合网| 人妻无码αv中文字幕久久| 久久强奷乱码老熟女网站| 精品国产一区二区三区久久久狼| 久久精品成人欧美大片| 久久99国产精一区二区三区| 国产欧美久久久精品影院| 久久99精品国产麻豆不卡| 国产V综合V亚洲欧美久久| 久久精品国产精品亚洲精品 | 精品久久久久久亚洲精品| 久久无码高潮喷水| 午夜视频久久久久一区 | 精品久久人妻av中文字幕| 伊人久久五月天| 久久久午夜精品| 久久国产热这里只有精品| 精品久久久久久久久久中文字幕|