| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
Re:是不是所有单词都用小写表示(大家看看我的程序,这题的意思就是不很明显)In Reply To:是不是所有单词都用小写表示(大家看看我的程序,这题的意思就是不很明显) Posted by:flyingfish at 2004-07-23 18:27:00 > #include<stdio.h>
> #include<string.h>
> #include<malloc.h>
> #define MULTIPLIER 37
> #define NHASH 500
> int max=0;
> unsigned int hash(char *str)
> {
> unsigned int h;
> unsigned char *p;
> h=0;
> for(p=(unsigned char *)str;*p!='\0';p++)
> h=MULTIPLIER*h+*p;
> return h%NHASH;
> }
> typedef struct Nameval Nameval;
> struct Nameval
> {
> char *name;
> int num;
> Nameval *next;
> };
> Nameval *symtab[NHASH];
> int lookup(char *name)
> {
> int h,i;
> Nameval *sym;
> h=hash(name);
> for(i=0;name[i]!='\0';i++)
> if(name[i]>='A'&&name[i]<='Z')
> name[i]+=32;
> for(sym=symtab[h];sym!=NULL;sym=sym->next)
> if(strcmp(name,sym->name)==0)
> {
> sym->num++;
> if(sym->num>max)
> max=sym->num;
> return 0;
> }
> sym=(Nameval *)malloc(sizeof(Nameval));
> sym->name=name;
> sym->num=1;
> sym->next=symtab[h];
> symtab[h]=sym;
> return 0;
> }
> int main()
> {
> char *tmp,*a[100];
> int size,i,j;
> char arry[100],*name;
> Nameval *sy;
> while(scanf("%s",arry)!=EOF)
> {
> size=strlen(arry);
> for(i=size-1;i>0;i--)
> if((arry[i]>='a'&&arry[i]<='z')||(arry[i]>='A'&&arry[i]<='Z')||(arry[i]>='0'&&arry[i]<='9'))
> break;
> arry[i+1]='\0';
> name=(char *)malloc(strlen(arry)+1);
> strcpy(name,arry);
> lookup(name);
> }
> printf("%d occurrences\n",max);
> j=0;
> for(i=0;i<NHASH;i++)
> for(sy=symtab[i];sy!=NULL;sy=sy->next)
> if(sy->num==max)
> a[j++]=sy->name;
> max=j;
> for(i=0;i<max;i++)
> for(j=i+1;j<max;j++)
> if(strcmp(a[i],a[j])>0)
> {
> tmp=a[i];
> a[i]=a[j];
> a[j]=tmp;
> }
> for(i=0;i<max;i++)
> printf("%s\n",a[i]);
> }
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator