这个题的话,直接使用结构体数组,存储判断就可以了,这里没有卡时间复杂度,查找的时候是两层循环,刚开始的时候想可能要一层循环卡时间复杂度,试了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; }