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

            <2025年8月>
            272829303112
            3456789
            10111213141516
            17181920212223
            24252627282930
            31123456

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            統(tǒng)計(jì)系統(tǒng)

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            欧美成a人片免费看久久| 久久精品国产亚洲av麻豆蜜芽| 国内精品久久九九国产精品| 久久国产热精品波多野结衣AV| 久久91精品国产91久久户| 国产精自产拍久久久久久蜜| 亚洲午夜无码AV毛片久久| 精品久久久久久久久午夜福利| 久久本道久久综合伊人| 久久精品人人做人人爽电影蜜月| 狠狠人妻久久久久久综合蜜桃| 狠狠色综合网站久久久久久久高清| 久久精品国产精品亚洲精品| 久久精品国产亚洲AV香蕉| 久久99国产一区二区三区| 国产精品对白刺激久久久| 久久人人青草97香蕉| 国产高潮久久免费观看| 国产精品9999久久久久| 国产A三级久久精品| 久久免费99精品国产自在现线| 国产精品久久久久久久久免费| 久久精品国产99国产精品亚洲| 久久久久人妻精品一区三寸蜜桃 | 伊人色综合久久| 久久久久亚洲精品无码蜜桃| 一级做a爰片久久毛片看看 | 国产高潮国产高潮久久久| 精品国产青草久久久久福利| 亚洲а∨天堂久久精品9966| 久久精品国产欧美日韩| 久久久久国色AV免费看图片| 国产L精品国产亚洲区久久| 久久精品这里热有精品| 99久久免费国产精精品| 国产精品久久精品| 国产精品久久午夜夜伦鲁鲁| 精品国产福利久久久| 亚洲午夜久久影院| 久久久精品久久久久特色影视| 久久AAAA片一区二区|