• <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年10月>
            262728293012
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            日韩人妻无码一区二区三区久久| 精品久久久久久无码国产| 日本欧美国产精品第一页久久| 久久久久国产精品| 精品久久人人爽天天玩人人妻| 久久黄色视频| 久久人人爽人人爽人人片AV不| 中文字幕日本人妻久久久免费 | 人人狠狠综合久久亚洲88| 丁香五月综合久久激情| 亚洲欧美国产日韩综合久久| 色88久久久久高潮综合影院| 久久久久99精品成人片| 97超级碰碰碰久久久久| 亚洲精品无码久久久| 久久er国产精品免费观看2| 亚洲人成网站999久久久综合 | 久久久久高潮综合影院| 国产韩国精品一区二区三区久久 | 伊人久久大香线蕉综合5g| 精品久久久久久成人AV| 无码人妻少妇久久中文字幕| 久久香蕉一级毛片| 久久久久无码精品国产| 区久久AAA片69亚洲| 久久成人永久免费播放| 久久99精品综合国产首页| 精品免费久久久久久久| 久久免费看黄a级毛片| 午夜精品久久影院蜜桃| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 日韩亚洲欧美久久久www综合网 | 精品水蜜桃久久久久久久| 国产精品久久久久久| 99久久国产宗和精品1上映| 人人狠狠综合88综合久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 伊人久久大香线蕉av一区| 久久精品国产久精国产果冻传媒 | 日韩中文久久| 精品伊人久久久|