題目要比對各個人名出現的次數,因為人名是字串,不方便直接用陣列做排序與索引,所以可以先放到map裡面去計次,記完之後再放回vector裡做排序即可。
#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
using namespace std;
int main()
{
cin.tie(0) , cin.sync_with_stdio(0);
int n,m;
cin >> n >> m;
map<string , int> t;
for(int i = 0; i < n; i++) {
string s;
cin >> s;
t[s] += 1;
}
vector<pair<int , string>> v;
for(auto it=t.begin(); it != t.end(); it++) {
pair<int,string> p;
p.first = it->second;
p.second = it->first;
v.push_back(p);
}
sort(v.begin() , v.end());
for(int i = 0; i < m; i++) {
cout << v[v.size()-1-i].second << " ";
}
cout << endl;
return 0;
}
沒有留言:
張貼留言