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

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            色欲综合久久躁天天躁蜜桃| 久久国产成人亚洲精品影院| 亚洲熟妇无码另类久久久 | AV无码久久久久不卡蜜桃| 国产91久久精品一区二区| 久久久WWW免费人成精品| 久久久久久精品久久久久| 1000部精品久久久久久久久| 日本国产精品久久| 2022年国产精品久久久久| 久久精品女人天堂AV麻| 69国产成人综合久久精品| 亚洲综合久久久| 久久久精品视频免费观看| 久久综合给合久久狠狠狠97色69| 777久久精品一区二区三区无码| 久久天天婷婷五月俺也去| 日本三级久久网| 久久久久久久人妻无码中文字幕爆| 久久国产精品免费| 久久久久夜夜夜精品国产| 少妇精品久久久一区二区三区| 人妻丰满?V无码久久不卡| 日本精品久久久中文字幕| 国产精品免费福利久久| 亚洲AV日韩精品久久久久| 久久久久久国产a免费观看黄色大片 | 色婷婷综合久久久久中文 | 一本色综合网久久| 久久99热这里只频精品6| 久久精品夜色噜噜亚洲A∨| 亚洲成色999久久网站| 97精品伊人久久大香线蕉app| 久久精品无码一区二区三区日韩| 一本一本久久a久久综合精品蜜桃 一本一道久久综合狠狠老 | 午夜精品久久久久久影视riav| 88久久精品无码一区二区毛片| 精品久久久久久国产91| 久久超乳爆乳中文字幕| AV狠狠色丁香婷婷综合久久| www.久久99|