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

            pku 1706 References 簡單hash

            題意很簡單,把文章中的引用信息整理到最后并給它們重新編號。。我想不懂為什么我自己寫hash效率那么低。。。還有就是看清題目,空行是僅僅包括空格、TAB、回車的行
              1 # include <stdio.h>
              2 # include <stdlib.h>
              3 # include <string.h>
              4 //char tmp[100];
              5 struct part
              6 {
              7     char tmp[3][100];
              8     int c;
              9     int id;
             10 }refer[40001];
             11 int c=0,hashc=1;
             12 int hash_map[100001][2];
             13 void puthash(int num,int val)
             14 {
             15     int h=num%99997;
             16     while(hash_map[h][0]!=-1&&hash_map[h][0]!=num)
             17          h=(h+1)%100000;
             18     if(hash_map[h][0]==-1)
             19     {
             20         hash_map[h][0]=num;
             21         hash_map[h][1]=val;
             22 
             23     }
             24 }
             25 int gethash(int num)
             26 {
             27     int h=num%99997;
             28     while(hash_map[h][0]!=-1&&hash_map[h][0]!=num)
             29              h=(h+1)%100000;
             30     if(hash_map[h][0]==-1)
             31         return -1;
             32     else
             33         return hash_map[h][1];
             34 }
             35 int cmp(const void *a,const void *b)
             36 {
             37     struct part *aa=(struct part *)a;
             38     struct part *bb=(struct part *)b;
             39     return aa->id-bb->id;
             40 }
             41 int emptyline(char *str)
             42 {
             43     int i;
             44     if(strlen(str)==0return 1;
             45     for(i=0;i<strlen(str);i++)
             46       if(str[i]!=' '&&str[i]!='\t')
             47         return 0;
             48     return 1;   
             49 }
             50 int main()
             51 {
             52 //    freopen("input.txt","r",stdin);
             53 //    freopen("ans.txt","w",stdout);
             54     int i,j;
             55         char str[100];
             56     int jud=0;
             57     memset(hash_map,-1,sizeof(hash_map));
             58     
             59     while(gets(str))
             60     {
             61         //if(!strcmp(str,"---")) break;
             62         if(str[0]=='[')
             63         {
             64             for(i=0;str[i]!=']';i++);
             65             str[i]='\0';
             66             refer[c].id=atoi(str+1);
             67             refer[c].c=0;
             68             strcpy(refer[c].tmp[refer[c].c++],str+i+1);
             69             while(gets(str))
             70             {
             71                 if(emptyline(str)) break;
             72                     
             73                 else
             74                 {
             75                     strcpy(refer[c].tmp[refer[c].c++],str);
             76                 }
             77             }
             78             c++;
             79         }
             80         else if(emptyline(str)) continue;
             81         else
             82         {
             83             if(jud==0)
             84                 jud=1;
             85             else
             86                 printf("\n");
             87             do
             88             {
             89                 if(emptyline(str)) break;
             90 
             91                 for(i=0;i<strlen(str);i++)
             92                 {
             93                     if(str[i]!='[')
             94                         printf("%c",str[i]);
             95                     else
             96                     {
             97                         int num,h;
             98                         for(j=i;str[j]!=']';j++);
             99                         str[j]='\0';
            100                         num=atoi(str+i+1);
            101                         str[j]=']';
            102                         h=gethash(num);
            103                         if(h==-1)
            104                         {
            105                             puthash(num,hashc);
            106                             h=hashc++;
            107                         }
            108                         printf("[%d]",h);
            109                         i=j;
            110                     }
            111                 }
            112                 printf("\n");
            113                 
            114             }while(gets(str));
            115         }
            116     }
            117     for(i=0;i<c;i++)
            118     {
            119         int res=gethash(refer[i].id);
            120         if(res==-1)
            121         {
            122             puthash(refer[i].id,hashc);
            123             res=hashc++;
            124         }
            125         refer[i].id=res;
            126     }
            127     qsort(refer,c,sizeof(struct part),cmp);
            128 
            129     for(i=0;i<c;i++)
            130     {
            131         printf("\n");
            132         printf("[%d]",refer[i].id);
            133         for(j=0;j<refer[i].c;j++)
            134             printf("%s\n",refer[i].tmp[j]);
            135     }
            136 printf("\n");
            137     return 0;
            138 }
            139 



            posted on 2010-11-07 02:54 yzhw 閱讀(249) 評論(0)  編輯 收藏 引用 所屬分類: data structsimple problem~

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

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            久久亚洲欧美国产精品| 久久久精品无码专区不卡| 久久天天躁狠狠躁夜夜躁2014| 伊人伊成久久人综合网777| 亚洲欧美伊人久久综合一区二区 | 亚洲乱亚洲乱淫久久| 中文字幕无码久久精品青草 | 久久综合亚洲色HEZYO国产| 久久综合视频网站| 久久99亚洲网美利坚合众国| 国产综合成人久久大片91| 久久婷婷国产剧情内射白浆 | 伊人情人综合成人久久网小说 | 久久九九精品99国产精品| 久久99精品久久久久久野外| 久久亚洲日韩精品一区二区三区| 久久99国产一区二区三区| 久久久久久国产精品无码超碰| 久久久久国产视频电影| 一本伊大人香蕉久久网手机| 久久人爽人人爽人人片AV | 久久精品国产亚洲AV高清热 | 色婷婷噜噜久久国产精品12p| 久久精品国产第一区二区三区| 理论片午午伦夜理片久久| 国产精品久久精品| 久久久久久夜精品精品免费啦| 亚洲女久久久噜噜噜熟女| 亚洲国产成人乱码精品女人久久久不卡 | 国产一区二区三区久久精品| 欧美午夜精品久久久久久浪潮| 91精品久久久久久无码| 久久99久久99小草精品免视看| 72种姿势欧美久久久久大黄蕉| 久久精品一本到99热免费| 无码超乳爆乳中文字幕久久| 婷婷综合久久中文字幕蜜桃三电影| 久久亚洲熟女cc98cm| 色欲久久久天天天综合网精品| 国产精品久久久久a影院| 久久人妻AV中文字幕|