您的位置:首页 > 其它

sicily1818 成绩转换

2014-12-09 12:25 363 查看
题目链接:http://soj.sysu.edu.cn/1818

题目大意:给出多组学生与成绩的对应数据,要求判断输入的学生的成绩等级,如果有相同名字的,就输出最后一个学生的成绩等级

解题思路:用map存储学生名字与成绩的对应表。此处虽然时间限制是5s,但是仍然不能简单地用两个数组分别存储名字和分数然后再遍历,否则还是会超时。

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main()
{
int T, score, n, m, temp;
string name, stu_name;
map<string, int> stu;
map<string, int>::iterator it;
cin >> T;
while (T--)
{
cin >> n >> m;
for (int i = 0; i < n; i++)
{
cin >> name >> score;
//stu.insert(pair<string, int>(name, score));   //  这会保留所有相同名字的学生的成绩,后面查找时会返回第一个找到的学生的成绩
stu[name] = score;  //  这会覆盖掉前面相同名字的学生的成绩
}
for (int i = 0; i < m; i++)
{
cin >> stu_name;
it = stu.find(stu_name);
temp = (*it).second;
if (temp > 100 || temp < 0)
cout << "Score is error!" << endl;
else if (temp >= 90)
cout << "A" << endl;
else if (temp >= 80)
cout << "B" << endl;
else if (temp >= 70)
cout << "C" << endl;
else if (temp >= 60)
cout << "D" << endl;
else
cout << "E" << endl;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sicily 1818 map STL