不是什么难题, 就为了写点c++代码, 别给忘了。
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4283
//AC #include <iostream> #include <vector> #include <map> #include <string> #include <cstdio> #include <cstdlib> #include <algorithm> using namespace std; struct Node { int num; int count; Node(int a, int b = 1) : num(a), count(b) {}; void inc_count() { count += 1; } friend bool operator<(const Node& left, const Node& right) { if(left.count == right.count) { return left.num > right.num; } else { return left.count > right.count; } } }; class Base { public: Base() {}; private: vector<Node> node_list; map<int, int> count_map; public: void push_num(int n) { count_map[n] += 1; } int run() { map<int, int>::iterator iter; for(iter = count_map.begin(); iter != count_map.end(); ++iter) { node_list.push_back(Node(iter->first, iter->second)); }; sort(node_list.begin(), node_list.end()); return node_list[0].num; }; }; int main() { freopen("test_input.lst", "r", stdin); int N; cin >> N; while(N--) { int line_num; Base T; cin >> line_num; for(int i = 0; i < line_num; i++) { int n; cin >> n; T.push_num(n); }; cout << T.run() << endl; }; return 0; };