题目:http://118.190.20.162/view.page?gpid=T26
解题思路:先用一个数组vs[N],i表示值,vs[i]表示次数,再放入结构体数组中,用sort排序解决。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1005;
int vs[N]={0};
struct node{
int t;//次数
int v;//值
}A[N];
bool cmp(node x,node y){
if(x.t>y.t) return true;
if(x.t==y.t&&x.v<y.v)return true;
return false;
}
int main(){
int n,s;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d",&s);
vs[s]++;
}
int num=0,k=0;
for(int i=0;i<=1000;i++){
if(vs[i]){
A[k].v=i;
A[k].t=vs[i];
k++;
}
num++;
}
sort(A,A+k,cmp);
for(int i=0;i<k;i++){
printf("%d %d\n",A[i].v,A[i].t);
}
return 0;
}