查找学生信息——清华大学复试上机
2018-01-11 23:40
148 查看
题目描述
输入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!”
示例1
输入
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
解题思路:这道题我开始把它看得太简单了,我以为还是个简单的排序的题,但是这道题需要查找然后输出,所以如果两层循环就会特别大,因此采用排序后进行二分法将缩短到m*log(n)。
注意点:中文字可以在字符串中原样输出不要纠结这个
输入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!”
示例1
输入
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
解题思路:这道题我开始把它看得太简单了,我以为还是个简单的排序的题,但是这道题需要查找然后输出,所以如果两层循环就会特别大,因此采用排序后进行二分法将缩短到m*log(n)。
注意点:中文字可以在字符串中原样输出不要纠结这个
//二分法 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct stu{ char num[10]; char name[40]; char sex[18]; int age; bool operator < (const stu &b) const{ return strcmp(num,b.num) < 0; } }stu[1005]; int main(){ int n,m; while(scanf("%d",&n) != EOF){ for(int i = 0;i < n;i++){ scanf("%s%s%s%d",stu[i].num,stu[i].name,stu[i].sex,&stu[i].age); } sort(stu,stu+n); scanf("%d",&m); for(int i = 0;i < m;i++){ char tmp[10]; scanf("%s",tmp); int top = n - 1,base = 0,ans=-1; while(top >= base){ int mid = (top + base)/2; int cmp = strcmp(tmp,stu[mid].num); if(cmp == 0){ ans = mid; break; } else if(cmp < 0){ top = mid - 1; } else{ base = mid + 1; } } if(ans == -1){ printf("No Answer!\n"); } else{ printf("%s %s %s %d\n",stu[ans].num,stu[ans].name,stu[ans].sex,stu[ans].age); } } } return 0; }
相关文章推荐
- 北理07年复试上机之实现学生类并实现信息一些操作
- 清华大学2003年机试-查找学生信息-1069
- 清华大学 2000年研究生复试上机题 解题报告
- 第十一周上机实践项目 项目2-储存班长的学生信息类(1)
- 题目18:查找学生信息
- 清华大学07年复试上机题题解
- 查找学生信息(map使用)
- 清华大学2008年复试上机题 解题报告
- 题目1069:查找学生信息 题目18
- 查找学生信息
- 题目18:查找学生信息
- 第十一周上机实践项目2(1):存储班长信息的学生类
- 查找学生信息(map使用)
- C下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- 清华大学2009年复试上机题 解题报告
- 清华大学2010年复试上机题 解题报告
- 九度OJ 1069:查找学生信息 (排序、查找)
- 第十一周上机实践项目——项目2-存储班长信息的学生类
- 九度OJ 1069 查找学生信息
- 二叉树遍历——清华大学复试上机