Description
by ZBY... :) 淘淘拿到了一份名单,他想对上面的名字进行处理,挑出一些特殊的名字,他请你来帮忙。
淘淘关注以下名字:
如果这个名字是“WYS”,他希望你的程序输出“KXZSMR”。
如果这个名字是“CQ”,他希望你的程序输出“CHAIQIANG”。
如果这个名字是“LC“,他希望你的程序输出“DRAGONNET”。
如果这个名字是“SYT”或“SSD”或“LSS”或“LYF”,他希望你的程序输出“STUDYFATHER”。
如果这个名字与上述任意名字都不相同,他希望你的程序输出“DENOMINATOR”。
Input
第一行有一个整数N,表示淘淘手中名单里的人数。
接下来N行,每行有一个字符串,即名单里的人名。
Output
输出N行,每行输出每个人名的判断结果。
Sample Input 1
9 WYS CQ WYS LC SYT SSD LSS LYF ZBY
Sample Output 1
KXZSMR CHAIQIANG KXZSMR DRAGONNET STUDYFATHER STUDYFATHER STUDYFATHER STUDYFATHER DENOMINATOR
解题:这题比较简单,使用STL里的关联容器map解决。
首先:将题目中给定的7个特定字符串及其对应的特定字符串建立7个key - value
map<string, string> M;
M["WYS"] = "KXZSMR";
M["CQ"] = "CHAIQIANG";
M["LC"] = "DRAGONNET";
M["SYT"] = "STUDYFATHER";
M["SSD"] = "STUDYFATHER";
M["LSS"] = "STUDYFATHER";
M["LYF"] = "STUDYFATHER";
接着就接收用户输入的字符串,判断其是否7个特定字符串中的一个,是则输出其对应的value值,否则就输出“DENOMINATOR”。
完整代码:
#include <iostream>
#include <map>
using namespace std;
map<string, string> M;
int main()
{
M["WYS"] = "KXZSMR";
M["CQ"] = "CHAIQIANG";
M["LC"] = "DRAGONNET";
M["SYT"] = "STUDYFATHER";
M["SSD"] = "STUDYFATHER";
M["LSS"] = "STUDYFATHER";
M["LYF"] = "STUDYFATHER";
int n;
cin >> n;
string s[n];
for (int i = 0; i < n; i++) {
cin >> s[i];
}
map<string, string>::iterator iter;
for (int i = 0; i < n; i++) {
iter = M.find(s[i]);//find 返回迭代器指向当前查找元素的位置否则返回map::end()位置
if (iter != M.end()) {
cout << iter->second << endl;
}
else {
cout << "DENOMINATOR" << endl;
}
}
return 0;
}