• <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 閱讀(149) 評論(0)  編輯 收藏 引用 所屬分類: data struct

            <2011年1月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久精品草草草| 久久精品国产亚洲7777| 中文国产成人精品久久不卡| 久久久久国产一区二区三区| 亚洲欧美国产精品专区久久| 亚洲成色www久久网站夜月| 少妇内射兰兰久久| 久久精品国产72国产精福利| 欧美日韩精品久久久免费观看| 成人国内精品久久久久一区| 久久99精品国产99久久6| 日韩人妻无码精品久久久不卡| 国产高潮国产高潮久久久91 | 久久综合久久自在自线精品自| 亚洲综合久久综合激情久久| 一本一本久久a久久综合精品蜜桃| 日本精品久久久久中文字幕8| 伊人久久大香线蕉AV色婷婷色| 久久综合久久性久99毛片| 久久久精品2019免费观看| 2021国内久久精品| 久久性生大片免费观看性| 久久免费视频网站| 久久九九亚洲精品| 99久久人妻无码精品系列| 色综合久久久久久久久五月| 亚洲婷婷国产精品电影人久久 | 一本色综合网久久| 四虎亚洲国产成人久久精品| 久久AAAA片一区二区| 精品久久久久久无码中文字幕| 国产成人久久精品激情 | 日韩av无码久久精品免费| 综合久久精品色| 久久无码高潮喷水| 久久精品国产精品亚洲精品| 久久国产AVJUST麻豆| 婷婷久久五月天| 久久精品国产免费观看 | 久久婷婷色香五月综合激情| 久久人人爽人人爽人人片AV东京热|