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 |
求助! 用了快排和二分,但仍然TLE,代码如下是不是还有什么要注意的地方呢?请大家指点一下,非常感谢 —————————————————————————————————————————————— #include<stdio.h> #include<stdlib.h> #include<string.h> char dic[100000][100],word[100],wrong[100000][100]; int Partition(int,int); void QSort(int,int); main() { int N,i,num_email,num,flag,num_wrong=0,mid,low,high; scanf("%d",&N); for (i=1;i<=N;i++) scanf("%s",dic[i]); scanf("%d",&num_email); num=num_email; QSort(1,N); while (num_email>0) { num_wrong=0; while (1) { flag=0; scanf("%s",word); if (strcmp(word,"-1")==0) break; low=1;high=N; while (low<=high) { mid=(low+high)/2; if (strcmp(word,dic[mid])==0) {flag=1;break;} else if (strcmp(word,dic[mid])<0) high=mid-1; else low=mid+1; } if (flag==0) { num_wrong++; strcpy(wrong[num_wrong],word); } } if (num_wrong==0) printf("Email %d is spelled correctly.\n",num-num_email+1); else { printf("Email %d is not spelled correctly.\n",num-num_email+1); for (i=1;i<=num_wrong;i++) printf("%s\n",wrong[i]); } num_email--; } printf("End of Output.\n"); system("PAUSE"); } int Partition(int low,int high) { char cmp[30]; strcpy(cmp,dic[low]); while (low<high) { while (low<high && strcmp(dic[high],cmp)>=0) --high; strcpy(dic[low],dic[high]); while (low<high && strcmp(dic[low],cmp)<=0) ++low; strcpy(dic[high],dic[low]); } strcpy(dic[low],cmp); return low; } void QSort(int low, int high) { int pivotloc; if (low<high) { pivotloc=Partition(low,high); QSort(low,pivotloc-1); QSort(pivotloc+1,high); } } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator