• <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 閱讀(90) 評論(0)  編輯 收藏 引用
            久久综合久久综合亚洲| 国产精品成人久久久久三级午夜电影| 伊人丁香狠狠色综合久久| 久久国产免费观看精品| 伊人色综合久久天天| 久久人人爽人人爽人人片AV东京热 | 国产国产成人精品久久| 九九久久精品无码专区| 狠狠综合久久综合88亚洲| 久久精品国产第一区二区三区 | 潮喷大喷水系列无码久久精品| 91精品国产色综久久| 丁香色欲久久久久久综合网| 国产精品久久久久久影院| 模特私拍国产精品久久| 久久精品一区二区| 777午夜精品久久av蜜臀| 国产呻吟久久久久久久92| 久久精品国产色蜜蜜麻豆| 国产精品久久久99| a高清免费毛片久久| 久久久久亚洲AV片无码下载蜜桃| 久久精品国产69国产精品亚洲| 久久夜色精品国产亚洲| 欧美成a人片免费看久久| 久久最新精品国产| aaa级精品久久久国产片| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 一本大道加勒比久久综合| 亚洲色欲久久久综合网东京热| 亚洲七七久久精品中文国产| 久久午夜电影网| 精品久久久久久中文字幕| 国产99久久精品一区二区| 国产午夜福利精品久久2021| 东方aⅴ免费观看久久av| 久久精品国产精品亚洲精品 | 久久国产成人午夜AV影院| 国产精品成人99久久久久| 久久久久久a亚洲欧洲aⅴ| 久久久久久久尹人综合网亚洲 |