PAT 乙级 1072 开学寄语
1. 题目简述及在线测试位置
1.1 给定违规物品的信息,然后判定学生携带的物品是否违规并打印相关信息
1.2 在线测试位置: 1072 开学寄语
2. 基本思路
2.1 可以使用STL map判定学生携带的物品是否属于违规物品
string ID; //物品编号
map<string, bool> Judge;
Judge[ID] = 1; //违规物品赋值为1
2.2 按题意编码即可
3. 完整AC代码
#include <map>
#include <iostream>
using namespace std;
int main()
{
int StuNum, illegalNum; //学生数 违规物品个数
string ID; //物品编号
cin >> StuNum >> illegalNum;
map<string, bool> Judge;
string StuName; int DeviceNum; //学生姓名 学生携带的设备数
int illegalPeople = 0, confiscateNum = 0; //违规人数 收缴违规设备数
bool flag = true; //控制打印
while (illegalNum--)
{
cin >> ID;
Judge[ID] = 1; //违规物品赋值为1
}
while (StuNum--)
{
cin >> StuName >> DeviceNum;
while (DeviceNum--)
{
cin >> ID;
if (Judge[ID] && flag)
{
cout << StuName << ": " << ID;
flag = false;
confiscateNum++;
illegalPeople++;
}
else if (Judge[ID] && !flag)
{
cout << " " << ID;
confiscateNum++;
}
}
if (!flag)
{
cout << endl;
flag = true;
}
}
cout << illegalPeople << " " << confiscateNum;
return 0;
}