• <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>
            posts - 33,  comments - 33,  trackbacks - 0
            這兩題是單模式串匹配
            hdu2087 數據量較小,可以采用標準庫strstr輕松完成
             1#include <stdio.h>
             2#include <string.h>
             3
             4char pat[1024];
             5char buf[1024];
             6
             7
             8int main()
             9{
            10    //freopen("data.txt","r",stdin);
            11    while(scanf("%s",buf) != EOF)
            12    {
            13        if (buf[0== '#')
            14        {
            15            break;
            16        }

            17        scanf("%s",pat);
            18        int len = strlen(pat);
            19        char *= 0;
            20        char *= buf;
            21        int cnt = 0;
            22        while((p = strstr(k,pat)) != 0)
            23        {
            24            ++cnt;
            25            k = p+len;
            26        }

            27        printf("%d\n",cnt);
            28    }

            29    return 0;
            3 0}

            hdu 1686
            這里使用kmp的思想,使得指向被匹配的串指針無需回溯

              1#include <iostream>
              2#include <string>
              3using namespace std;
              4
              5int next[10005];
              6
              7//已知next[j] = k
              8//設next[j+1] = k’
              9//P[0,1,2….k’] = P[j-k’,j-k’+1,….j+1]
             10
             11
             12void compNext(const string& _pattern)
             13{
             14    int len = _pattern.length();
             15    int p1 = -1;
             16    int p2 = 0;
             17    for (int i = 0; i < len; ++i)
             18    {
             19        next[i] = -1;
             20    }

             21    while(p2 < len )
             22    {
             23        while(p1 != -1 && _pattern[p1] != _pattern[p2])
             24            p1 = next[p1];
             25        ++p1;++p2;
             26        if (_pattern[p1] == _pattern[p2])
             27        {
             28            next[p2] = next[p1];
             29        }

             30        else
             31        {
             32            next[p2] = p1;
             33        }

             34    }

             35}

             36
             37
             38int kmp(const char* _str,int _lenS,const string& _pattern)
             39{
             40    int len = _pattern.length();
             41    int pp = 0;
             42    int ps = 0;
             43    int cnt=  0;
             44    while((ps < _lenS) )
             45    {
             46        if (_str[ps] == _pattern[pp])
             47        {
             48            ++pp;
             49            ++ps;
             50        }

             51        else
             52        {
             53            if (next[pp] != -1)
             54            {
             55                pp = next[pp];
             56            }

             57            else
             58            {
             59                pp = 0;
             60                ++ps;
             61            }

             62        }

             63        if (pp >= len)
             64        {
             65            ++cnt;
             66            if (next[pp] != -1)
             67            {
             68                pp = next[pp];
             69            }

             70            else
             71            {
             72                pp = 0;
             73                ++ps;
             74            }

             75        }

             76    }

             77    
             78    return cnt;
             79}

             80
             81string pattern;
             82string str;
             83void Test()
             84{
             85    cin >> pattern >> str;
             86    compNext(pattern);
             87    int cnt = kmp(str.c_str(),str.length(),pattern);
             88    printf("%d\n",cnt);
             89}

             90
             91int main()
             92{
             93    freopen("data.txt","r",stdin);
             94    int tc;
             95    cin >> tc;
             96    for (int i = 0; i < tc; ++i)
             97    {
             98        Test();
             99    }

            100    return 0;
            101}








            posted on 2012-03-29 20:13 bennycen 閱讀(1254) 評論(0)  編輯 收藏 引用 所屬分類: 算法題解
            亚洲av成人无码久久精品| 久久久久99精品成人片试看 | 久久国产免费直播| 香蕉99久久国产综合精品宅男自| 久久人人爽人人爽人人片AV东京热 | 色欲综合久久躁天天躁蜜桃| 99久久国产亚洲高清观看2024 | 亚洲精品国产成人99久久| 热综合一本伊人久久精品| 精品蜜臀久久久久99网站| 久久国产一片免费观看| 精品久久久久久中文字幕人妻最新| 岛国搬运www久久| 欧洲成人午夜精品无码区久久| 国产亚洲色婷婷久久99精品91| 影音先锋女人AV鲁色资源网久久| 国产免费福利体检区久久| 久久久久亚洲av无码专区喷水| 久久久久久免费视频| 国产精品丝袜久久久久久不卡| 久久男人Av资源网站无码软件| 中文字幕久久亚洲一区| 精品久久人人爽天天玩人人妻| 国产91色综合久久免费| 久久99热这里只有精品国产| 日日狠狠久久偷偷色综合0| 国产精久久一区二区三区| 国产精品久久久久久福利漫画| 少妇无套内谢久久久久| 亚洲国产成人乱码精品女人久久久不卡 | 久久强奷乱码老熟女网站| 久久综合综合久久狠狠狠97色88| 亚洲级αV无码毛片久久精品| 狠狠色狠狠色综合久久| 一本一本久久A久久综合精品| 中文字幕精品久久久久人妻| 久久亚洲精品无码观看不卡| 日韩久久无码免费毛片软件| 日本WV一本一道久久香蕉| 久久久噜噜噜久久中文字幕色伊伊| 天天影视色香欲综合久久|