• <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++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              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)  編輯 收藏 引用
            亚洲精品tv久久久久| 久久久综合香蕉尹人综合网| 国内精品人妻无码久久久影院导航| 久久精品亚洲男人的天堂| 久久伊人精品青青草原高清| 91久久九九无码成人网站| 无码任你躁久久久久久久| 久久精品久久久久观看99水蜜桃 | 久久ZYZ资源站无码中文动漫| 99久久免费国产特黄| 久久精品国产只有精品66 | 久久综合久久综合久久| 欧美麻豆久久久久久中文| 亚洲精品乱码久久久久久中文字幕 | 久久AⅤ人妻少妇嫩草影院| 无码国内精品久久综合88| 久久国产精品久久久| 波多野结衣久久精品| 99久久精品国产一区二区三区| 久久99九九国产免费看小说| 久久国产精品一区二区| 精品人妻伦一二三区久久 | 亚洲乱码精品久久久久..| 国产成人久久激情91| 亚洲欧美一区二区三区久久| 午夜不卡888久久| 日本欧美久久久久免费播放网 | 久久精品国产清自在天天线| 99国产欧美精品久久久蜜芽| 国内精品久久久久影院亚洲| 91精品婷婷国产综合久久| 色狠狠久久AV五月综合| 久久国产欧美日韩精品| 亚洲国产天堂久久久久久| 大美女久久久久久j久久| 丁香五月网久久综合| 久久青青草原亚洲av无码app| 精品久久亚洲中文无码| 99久久综合国产精品免费| 精品人妻伦一二三区久久 | 国内精品久久久久久久coent|