201503-2-数字排序-CCF

 题目: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;
}

猜你喜欢

转载自blog.csdn.net/lianghudream/article/details/83868487
今日推荐