标签:
输入N个学生的信息,然后进行查询。
输入的第一行为N,即学生的个数(N<=1000)
输出M行,每行包括一个对应于查询的学生的信息。
4 01 李江 男 21 02 刘唐 男 23 03 张军 男 19 04 王娜 女 19 5 02 03 01 04 03
02 刘唐 男 23 03 张军 男 19 01 李江 男 21 04 王娜 女 19 03 张军 男 19
1 #include<stdio.h> 2 #include<algorithm> 3 #include<string.h> 4 #include<fstream> 5 using namespace std; 6 struct stu{ 7 char stu_no[100]; 8 char stu_name[100]; 9 char stu_sex[50]; 10 char stu_age[50]; 11 bool operator<(const stu & x)const{ 12 return strcmp(stu_no,x.stu_no)<0; 13 } 14 }buf[1000]; 15 int main(){ 16 int n; 17 while(scanf("%d",&n)!=EOF){ 18 for(int i=0;i<n;i++){ 19 scanf("%s%s%s%s", 20 buf[i].stu_no,buf[i].stu_name,buf[i].stu_sex,buf[i].stu_age); 21 } 22 sort(buf,buf+n); 23 int t; 24 scanf("%d",&t); 25 while(t!=0){t--; 26 int ans=-1; 27 char temp_no[100]; 28 scanf("%s",temp_no); 29 int top=n-1,base=0; 30 while(top>=base){ 31 int mid=(top+base)/2; 32 int tmp=strcmp(buf[mid].stu_no,temp_no); 33 if(tmp==0){ 34 ans=mid; 35 break; 36 } 37 else if(tmp>0)top=mid-1; 38 else base=mid+1; 39 } 40 if(ans==-1) 41 printf("No Answer!\n"); 42 else printf("%s %s %s %s\n", 43 buf[ans].stu_no,buf[ans].stu_name,buf[ans].stu_sex,buf[ans].stu_age); 44 } 45 } 46 }
刚开始数组开小了,老是WA,以后做题数组往大了开,内存超了才调小
标签:
原文地址:http://www.cnblogs.com/sandy-t/p/4297647.html