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

            pku2525 Text Formalization 惡心的模擬

            題意是這樣:
            將一篇文章中的縮寫和簡略語替換成原來的樣子。
            有點要求,縮寫只在第一次替換。如果有多種替換方法,則最先出現的可替換詞優先替換。如果還有重復,則列表前面的先替換。
            解法:
            狂用string.h里的函數然后+暴力就可以了,這種模擬題一般不會考到什么算法。。
            代碼:
              1 # include <cstdio>
              2 using namespace std;
              3 # include <cstring>
              4 # include <string>
              5 char contraction[201][2][100],acronym[51][2][100];
              6 int main()
              7 {
              8     int c,a;
              9     scanf("%d%d",&c,&a);
             10     getchar();
             11     for(int i=0;i<c;i++)
             12     {
             13         char tmp[200];
             14         gets(tmp);
             15         char *p1=strstr(tmp,"\"");
             16         char *p2=strstr(p1+1,"\"");
             17         *p2='\0';
             18         strcpy(contraction[3*i][0],p1+1);
             19         p1=strstr(p2+1,"\"");
             20         p2=strstr(p1+1,"\"");
             21         *p2='\0';
             22         strcpy(contraction[3*i][1],p1+1);
             23         strcpy(contraction[3*i+1][0],contraction[3*i][0]);
             24         strcpy(contraction[3*i+1][1],contraction[3*i][1]);
             25         contraction[3*i+1][0][0]=(contraction[3*i+1][0][0]>='a'&&contraction[3*i+1][0][0]<='z'?contraction[3*i+1][0][0]-32:contraction[3*i+1][0][0]);
             26         contraction[3*i+1][1][0]=(contraction[3*i+1][1][0]>='a'&&contraction[3*i+1][1][0]<='z'?contraction[3*i+1][1][0]-32:contraction[3*i+1][1][0]);
             27         strcpy(contraction[3*i+2][0],contraction[3*i][0]);
             28         strcpy(contraction[3*i+2][1],contraction[3*i][1]);
             29         for(int j=0;j<strlen(contraction[3*i+2][0]);j++)
             30             contraction[3*i+2][0][j]=(contraction[3*i+2][0][j]>='a'&&contraction[3*i+2][0][j]<='z'?contraction[3*i+2][0][j]-32:contraction[3*i+2][0][j]);
             31         for(int j=0;j<strlen(contraction[3*i+2][1]);j++)
             32             contraction[3*i+2][1][j]=(contraction[3*i+2][1][j]>='a'&&contraction[3*i+2][1][j]<='z'?contraction[3*i+2][1][j]-32:contraction[3*i+2][1][j]);
             33     }
             34     c*=3;
             35     for(int i=0;i<a;i++)
             36     {
             37         char tmp[200];
             38         gets(tmp);
             39         char *p1=strstr(tmp,"\"");
             40         char *p2=strstr(p1+1,"\"");
             41         *p2='\0';
             42         strcpy(acronym[i][0],p1+1);
             43         p1=strstr(p2+1,"\"");
             44         p2=strstr(p1+1,"\"");
             45         *p2='\0';
             46         strcpy(acronym[i][1],p1+1);
             47     }
             48     char ostr[50000];
             49     char tstr[50000];
             50     bool used[51];
             51     memset(used,false,sizeof(used));
             52     while(gets(ostr))
             53     {
             54         if(ostr[0]=='#'
             55         {
             56             memset(used,false,sizeof(used));
             57             puts(ostr);
             58             continue;
             59         }
             60         char *str=ostr;
             61         while(true)
             62         {
             63             char *p=NULL,*ori,*target;
             64             int type=0;
             65             for(int i=0;i<c;i++)
             66             {
             67                 char *tmp=strstr(str,contraction[i][0]);
             68                 if(tmp!=NULL&&(p==NULL||tmp<p)) 
             69                 {
             70                     p=tmp;
             71                     ori=contraction[i][0];
             72                     target=contraction[i][1];
             73                     type=0;
             74                 }
             75             }
             76             for(int i=0;i<a;i++)
             77             {
             78                 char *tmp=strstr(str,acronym[i][0]);
             79                 if(tmp!=NULL&&(p==NULL||tmp<p)) 
             80                 {
             81                     p=tmp;
             82                     ori=acronym[i][0];
             83                     target=acronym[i][1];
             84                     type=i+1;
             85                 }
             86             }
             87             if(p==NULL) break;
             88             else
             89             {
             90                 if(!type)
             91                 {
             92                     *p='\0';
             93                     strcpy(tstr,str);
             94                     strcat(tstr,target);
             95                     strcat(tstr,p+strlen(ori));
             96                     strcpy(str,tstr);
             97                     str=p+strlen(target);
             98                 }
             99                 else
            100                 {
            101                     type--;
            102                     if(used[type]) str+=strlen(ori);
            103                     else
            104                     {
            105                         used[type]=true;
            106                         *p='\0';
            107                         strcpy(tstr,str);
            108                         strcat(tstr,target);
            109                         strcat(tstr," (");
            110                         strcat(tstr,ori);
            111                         strcat(tstr,")");
            112                         strcat(tstr,p+strlen(ori));
            113                         strcpy(str,tstr);
            114                         str=p+strlen(target)+3+strlen(ori);
            115                     }
            116                 }
            117             }    
            118         }
            119         puts(ostr);
            120     }
            121     return 0;
            122     
            123 }


            posted on 2011-01-04 23:36 yzhw 閱讀(156) 評論(0)  編輯 收藏 引用 所屬分類: data struct

            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久精品国产黑森林| 日本欧美久久久久免费播放网| av无码久久久久久不卡网站 | 色综合久久中文综合网| 国产成人精品久久一区二区三区 | 久久91精品综合国产首页| 亚洲国产成人久久笫一页| 久久夜色精品国产网站| 欧美精品丝袜久久久中文字幕| 亚洲午夜久久久影院伊人| 久久青青草原国产精品免费 | 国产高清美女一级a毛片久久w| 区久久AAA片69亚洲| 99久久精品免费观看国产| 国产激情久久久久久熟女老人| 久久午夜电影网| 香蕉久久夜色精品升级完成| 久久精品国产清自在天天线| 国产婷婷成人久久Av免费高清 | 精品久久久久久国产91| 久久人人爽人人爽人人av东京热| 51久久夜色精品国产| 狠狠色丁香久久婷婷综合五月| 亚洲国产成人久久综合野外| 国产精品九九久久免费视频| 国产精品天天影视久久综合网| 久久九九久精品国产免费直播| 美女久久久久久| 久久精品国产亚洲精品| 亚洲欧美日韩精品久久| 97超级碰碰碰久久久久| 亚洲精品tv久久久久久久久| 亚洲人成无码www久久久| 久久久久久亚洲精品不卡 | 久久97久久97精品免视看| 91精品国产综合久久四虎久久无码一级| 人妻无码αv中文字幕久久| 久久夜色精品国产噜噜麻豆| 亚洲av伊人久久综合密臀性色| 人妻少妇久久中文字幕一区二区 | 99久久精品无码一区二区毛片|