码迷,mamicode.com
首页 > 其他好文 > 详细

九度oj 题目1069:查找学生信息

时间:2015-02-22 19:36:07      阅读:281      评论:0      收藏:0      [点我收藏+]

标签:

题目描述:

 输入N个学生的信息,然后进行查询。

输入:

 输入的第一行为N,即学生的个数(N<=1000)

接下来的N行包括N个学生的信息,信息格式如下:
01 李江 男 21
02 刘唐 男 23
03 张军 男 19
04 王娜 女 19
然后输入一个M(M<=10000),接下来会有M行,代表M次查询,每行输入一个学号,格式如下:
02
03
01
04
输出:

 输出M行,每行包括一个对应于查询的学生的信息。

如果没有对应的学生信息,则输出“No Answer!”
样例输入:
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,以后做题数组往大了开,内存超了才调小

 

 

 



九度oj 题目1069:查找学生信息

标签:

原文地址:http://www.cnblogs.com/sandy-t/p/4297647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!