首页 > ACM题库 > 九度OJ > 九度-1069-查找学生信息[解题代码]
2013
12-12

九度-1069-查找学生信息[解题代码]

题目来源:2003年清华大学计算机研究生机试真题

题目描述:

 输入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

cpp 代码如下:
#include <iostream>
#include <stdio.h>
#include <map>
#include <string>
using namespace std;

int main() {
	string id,info,str;
	int index,n,M;
	map<string,string> m;
	map<string,string>:: iterator iter;
	while(cin >> n){
		cin.ignore();
		m.clear();
		for(int i=0; i<n; i++){
			getline(cin,str);
			index = str.find(" ");
			id = str.substr(0,index);
			info = str.substr(index+1);
			m.insert(pair<string,string>(id,info));
		}
		cin >> M;
		for(int i=0; i<M; i++){
			cin >> id;
			iter = m.find(id);
			if(iter != m.end())
				cout << iter->first <<" "<<iter->second<<endl;
			else
				 cout<<"No Answer!"<<endl;
		}
	}

	return 0;
}

/**************************************************************
	Problem: 1069
	User: coder
	Language: C++
	Result: Accepted
	Time:280 ms
	Memory:1520 kb
****************************************************************/