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

            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導航

            統計

            公告

            統計系統

            留言簿(1)

            隨筆分類(227)

            文章分類(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評論

            閱讀排行榜

            国产亚州精品女人久久久久久 | 狼狼综合久久久久综合网| 久久精品中文无码资源站| 狠狠色丁香久久婷婷综合五月| 国产精品美女久久久久av爽| 婷婷久久综合九色综合绿巨人 | 久久综合亚洲色一区二区三区| 久久久久久亚洲AV无码专区| 国产精品嫩草影院久久| 免费精品国产日韩热久久| 狠狠色丁香婷婷综合久久来| 久久人人爽人人人人爽AV| 97超级碰碰碰久久久久| 免费无码国产欧美久久18| 精品九九久久国内精品| 久久综合给合综合久久| 久久久无码精品午夜| 久久精品午夜一区二区福利| 色偷偷88欧美精品久久久| 99久久无色码中文字幕| 亚洲国产欧洲综合997久久| 久久久午夜精品| 久久精品亚洲乱码伦伦中文| 精品免费久久久久国产一区| 天天躁日日躁狠狠久久| 四虎亚洲国产成人久久精品| 国产精品久久久久久久久鸭| 无码人妻久久一区二区三区免费丨| 99久久成人18免费网站| 久久国产精品免费一区二区三区| 亚洲国产精品无码久久久秋霞2| 婷婷久久综合| 久久久久久久综合狠狠综合| 青青草国产97免久久费观看| 久久精品三级视频| 久久久WWW成人| 久久亚洲国产成人影院网站| 久久精品国产精品亚洲下载| 精品99久久aaa一级毛片| 久久99国产一区二区三区| 久久精品国产一区二区|