链接和思路
OJ链接:传送门
本文需求来自LA姐。本题仅需用一个辅助数据结构Tmp
记录每1个数字的值(value
)及其出现的次数(cnt
),然后重载运算符<
并针对cnt
排序输出即可。辅助数据结构Tmp
定义如下:
cpp
struct Tmp {
int value;
int cnt;
bool operator<(const Tmp &t) const {
if (this->cnt != t.cnt)
return this->cnt < t.cnt;
return this->value > t.value;
}
} result[1005];
其余见AC代码。
AC代码
cpp
#include <bits/stdc++.h>
using namespace std;
int a[1005] = {0};
int n;
struct Tmp {
int value;
int cnt;
bool operator<(const Tmp &t) const {
if (this->cnt != t.cnt)
return this->cnt < t.cnt;
return this->value > t.value;
}
} result[1005];
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
int idx;
cin >> idx;
a[idx]++;
}
int curIdx = 0;
for (int i = 0; i <= 1000; i++) {
if (a[i] != 0) {
result[curIdx].value = i;
result[curIdx].cnt = a[i];
curIdx++;
}
}
sort(result, result + curIdx);
for (int i = curIdx - 1; i >= 0; --i) {
cout << result[i].value << " " << result[i].cnt << endl;
}
return 0;
}