H106OJ_第二次测试_淘淘的名单:
提示:本文章为课程任务(学习记录)
本文章为课程第二次测试习题记录,仅供参考。
问题描述
题目:
淘淘拿到了一份名单,他想对上面的名字进行处理,挑出一些特殊的名字,他请你来帮忙。
淘淘关注以下名字:
如果这个名字是“WYS”,他希望你的程序输出“KXZSMR”。
如果这个名字是“CQ”,他希望你的程序输出“CHAIQIANG”。
如果这个名字是“LC“,他希望你的程序输出“DRAGONNET”。
如果这个名字是“SYT” 或 “SSD” 或 “LSS” 或 “LYF”,他希望你的程序输出“STUDYFATHER”。
如果这个名字与上述任意名字都不相同,他希望你的程序输出“DENOMINATOR”。
输入:
第一行有一个整数N,表示淘淘手中名单里的人数。
接下来N行,每行有一个字符串,即名单里的人名。
输出:
输出N行,每行输出每个人名的判断结果。
样例:
这道题目要求和提示很清晰,不做分析。
思路:
直接利用map容器,根据key索引value值。
对于检查不存在map中的,可以设置函数,如果在预选名单中找到了目标,返回真值,否则返回假。
在map中设置一个pair形如{“DIFF”,“DENOMINATOR” }
的对,对于假值,索引”DIFF“
即可。
代码如下:
代码:
#include<iostream>
#include<map>
using namespace std;
int n;
string name[10];
map<string,string> m;
void init()
{
m.insert({"WYS", "KXZSMR"});
m.insert({"CQ", "CHAIQIANG"});
m.insert({"LC", "DRAGONNET"});
m.insert({"SYT", "STUDYFATHER"});
m.insert({"SSD", "STUDYFATHER"});
m.insert({"LSS", "STUDYFATHER"});
m.insert({"LYF", "STUDYFATHER"});
m.insert({"DIFF", "DENOMINATOR"});
name[0] = "WYS", name[1] = "CQ", name[2] = "LC", name[3] = "SYT";
name[4] = "SSD", name[5] = "LSS", name[6] = "LYF";
}
bool check(string str)
{
for(int i = 0; i < 7; i ++)
if(name[i] == str)
return true;
return false;
}
int main()
{
init();
cin >> n;
while(n --)
{
string str;
cin >> str;
if(check(str))
cout << m[str] << endl;
else
cout << m["DIFF"] << endl;
}
return 0;
}
Over,Bye~ 2022.03.26