#include <iostream>
#include <algorithm>
using namespace std;
const int N=1010;
struct Number{
int data;
int count;
}a[N];
bool cmp(Number a,Number b){
if(a.count!=b.count){
return a.count>b.count;
}
else if(a.data!=b.data){
return a.data<b.data;
}
}
int main(){
int n,x;
cin>>n;
for(int i=0;i<N;i++){
a[i].data=0;
a[i].count=0;
}
for(int i=0;i<n;i++){
cin>>x;
a[x].data=x;
a[x].count++;
}
sort(a,a+N,cmp);
for(int i=0;i<N;i++){
if(a[i].count==0) break;
else cout<<a[i].data<<" "<<a[i].count<<endl;
}
return 0;
}
原始思路:输入数字x,对应数字x的hash[x]++;但是,hash排序让人头大不知道该如何解决;
解决方案:定义一个结构体,数字和对应的计数看成一个整体进行排序;
注意点:输入一个数字,该数字即为下标,数字和计数为该结构体数组的属性;
定义排序的规则时,优先计数然后再数字的大小;
(看见别人的代码可以用map做,还没有想清楚,关于stl不会应用啊 ,还是得多看啊!!!!!)