题目链接
题意
给你一个n和m分别表示罪犯的人数和不同特征的数量,接着给出不定数量的人的不同特征,要求输出若是罪犯则输出对应编号,不是则输出pass,特殊的最后的0表示结束不输出
思路
1.STL vector 的应用
2.存储 罪犯的特征
3.之后根据存储的特征进行比对,输出对应的结果
坑点
1.查询的数据的数量是未知的
2.罪犯数据与查询数据 中间有一行空的
代码
#include<bits/stdc++.h>
using namespace std;
int n,m,a;
vector<int>v;//存储罪犯的信息
string s;//表示 id 编号
map<vector<int>,string>mp;//存储对应罪犯的信息和id 编号以便进行比较
int main()
{
cin>>n>>m;//n个罪犯 m个特征
for(int i=0;i<m;i++)
{
v.clear();//每次都需要清空
cin>>a;//读入罪犯的各个特征
v.push_back(a);//存入
}
cin>>s;//读入编号
mp[v]=s;//存入罪犯的各个特征和编号
while(1)//因为不知道查询的数量 所以写成死循环
{
v.clear();//首先需清空
for(int i=0;i<m;i++)
{
cin>>a;//同上遍历读入 各个特征
v.push_back(a);//存入vector 中
}
if(v[0]==0)//如果说等于0
{
break;//即最后的0 的话 无需输出 因此停止
}
if(mp[v]=="")//如果存入的编号为空的话
{
cout<<"Pass\n";//表示这个特征不是罪犯的 因此通过
}
else{
cout<<mp[v]<<"\n";//否则找到的话 即输出罪犯的编号
}
}
return 0;
}
总结
难度稍难,信息较多,需细心分析