这个题的话,直接使用结构体数组,存储判断就可以了,这里没有卡时间复杂度,查找的时候是两层循环,刚开始的时候想可能要一层循环卡时间复杂度,试了map,没有审清题意,map的话,输出是默认关键字从小到大排序的,这里的话需要自己注意下,很多基础的知识点要自己再去看一下了。
#include<iostream>
using namespace std;
struct Vote{
string name;
int count;
};
int main(){
int n;
string name;
while(cin>>n){
Vote vote[105];
for(int i=0;i<n;i++){
cin>>name;
vote[i].name=name;
vote[i].count=0;
}
int m,other=0;
cin>>m;
for(int i=0;i<m;i++){
cin>>name;
int j;
for(j=0;j<n;j++){
if(vote[j].name==name){
vote[j].count++;
break;
}
}
if(j==n){
other++;
}
}
for(int i=0;i<n;i++){
cout<<vote[i].name<<" : "<<vote[i].count<<endl;
}
cout<<"Invalid"<<" : "<<other<<endl;
}
return 0;
}
京公网安备 11010502036488号