• <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>

            糯米

            TI DaVinci, gstreamer, ffmpeg
            隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
            數據加載中……

            KMP 演示程序

            下面這個小程序,可以演示 KMP 的匹配過程。
            一直沒有真正理解這個算法,昨天看了下算法導論。才懂了。
            確實是一個相當精辟,相當巧妙的算法。太牛逼了!

            #include <stdio.h>
            #include <string.h>

            #define MAX_LEN 256

            int tbl[MAX_LEN];
            char *str = "abbbbbbb";
            char *ptn = "bb";
            char spc[MAX_LEN];

            int main()
            {
                int i, j;

                memset(spc, ' ', sizeof(spc));

                tbl[0] = 0;
                for (i = 1; ptn[i]; i++) {
                    for (j = tbl[i - 1]; j && ptn[j] != ptn[i]; j = tbl[j]);
                    if (ptn[j] == ptn[i])
                        j++;
                    tbl[i] = j;
                }
                printf("table:\n");
                for (i = 0; ptn[i]; i++) 
                    printf("  %c", ptn[i]);
                printf("\n");
                for (i = 0; ptn[i]; i++)
                    printf("%3d", tbl[i]);
                printf("\n");

                j = 0;
                for (i = 0; str[i]; ) {
                    printf("\nmatching #%d\n", i);
                    printf("%s\n", str);
                    fwrite(spc, 1, i - j, stdout);
                    printf("%s\n", ptn);
                    fwrite(spc, 1, i, stdout);
                    printf("^\n");
                
                    if (str[i] == ptn[j]) {
                        i++;
                        j++;
                        printf("ok\n");
                    } else {
                        if (j) 
                            j = tbl[j - 1];
                        else
                            i++;
                        printf("jumped to %d\n", j);
                    }
                    if (!ptn[j])
                        printf("matched at %d\n", i);
                }

                return 0;
            }



            輸出:
            table:
              b  b
              0  1

            matching #0
            abbbbbbb
            bb
            ^
            jumped to 0

            matching #1
            abbbbbbb
             bb
             ^
            ok

            matching #2
            abbbbbbb
             bb
              ^
            ok
            matched at 3

            matching #3
            abbbbbbb
             bb
               ^
            jumped to 1

            matching #3
            abbbbbbb
              bb
               ^
            ok
            matched at 4

            matching #4
            abbbbbbb
              bb
                ^
            jumped to 1

            matching #4
            abbbbbbb
               bb
                ^
            ok
            matched at 5

            matching #5
            abbbbbbb
               bb
                 ^
            jumped to 1

            matching #5
            abbbbbbb
                bb
                 ^
            ok
            matched at 6

            matching #6
            abbbbbbb
                bb
                  ^
            jumped to 1

            matching #6
            abbbbbbb
                 bb
                  ^
            ok
            matched at 7

            matching #7
            abbbbbbb
                 bb
                   ^
            jumped to 1

            matching #7
            abbbbbbb
                  bb
                   ^
            ok
            matched at 8

            posted on 2010-04-29 12:48 糯米 閱讀(428) 評論(0)  編輯 收藏 引用 所屬分類: Algorithm

            久久精品无码一区二区WWW| 久久狠狠爱亚洲综合影院| 久久久噜噜噜久久中文字幕色伊伊| 久久久久九国产精品| 欧美精品福利视频一区二区三区久久久精品 | 久久亚洲精品成人AV| 大伊人青草狠狠久久| 久久人人爽人人爽人人片AV麻豆 | 色综合合久久天天给综看| 77777亚洲午夜久久多人| 国产午夜福利精品久久| 免费精品99久久国产综合精品| 麻豆国内精品久久久久久| 亚洲AV无码一区东京热久久| 久久毛片免费看一区二区三区| 91麻豆国产精品91久久久| 午夜精品久久久久成人| 国产婷婷成人久久Av免费高清| 久久婷婷五月综合色奶水99啪| 97久久精品人妻人人搡人人玩| 热久久国产欧美一区二区精品| 精品乱码久久久久久久| 中文精品99久久国产| 欧美粉嫩小泬久久久久久久| 99久久99久久精品免费看蜜桃 | 日韩精品久久久久久| 亚洲AV无码久久寂寞少妇| 亚洲一级Av无码毛片久久精品| 久久99国产精品二区不卡| 热99re久久国超精品首页| 亚洲精品国产美女久久久| 亚洲AV伊人久久青青草原| 久久精品中文字幕有码| 精品久久人人妻人人做精品| 日韩亚洲欧美久久久www综合网| 69SEX久久精品国产麻豆| 人妻精品久久无码专区精东影业 | 精品久久人妻av中文字幕| 久久国产色AV免费看| 久久狠狠一本精品综合网| 久久精品国产99国产精品澳门|