CSP-201503-2-数字排序

数字排序(传送门)

一道水题,用sort就搞定了,看代码

满分代码

#include <bits/stdc++.h>

using namespace std;

int n;
int a[1001];

struct node{
	int data;
	int c;
}b[1001];

bool cmp(node aa,node bb){
	if(aa.c == bb.c){
		return aa.data < bb.data;
	}
	return aa.c > bb.c;
}

int main(){
	
	cin >> n;
	for(int i = 0; i < n; i++){
		cin >> a[i];
	}
	a[n] = -1;
	sort(a,a+n);
	
	int j = 0;
	int coun = 1;
	for(int i = 0; i < n; i++){
		if(a[i] == a[i+1]){
			coun++;
		}else{
			b[j].data = a[i];
			b[j].c = coun;
			j++;
			coun = 1;
		}
	}
	
	sort(b,b+j,cmp);
	
	for(int i = 0; i < j; i++){
		cout << b[i].data << " " << b[i].c << "\n";
	}
	return 0;
}

这里是题目O(∩_∩)O,欢迎大家留言,有空的话可以点个赞哦(#^ . ^#)

试题编号:
201503-2
试题名称: 数字排序
时间限制: 1.0s
内存限制: 256.0MB
问题描述:

问题描述:

  给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。

输入格式:

  输入的第一行包含一个整数n,表示给定数字的个数。
  第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。

输出格式:

  输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。

样例输入:

  12
  5 2 3 3 1 3 4 2 5 2 3 5

样例输出:

  3 4
  2 3
  5 3
  1 1
  4 1

评测用例规模与约定

  1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。
发布了80 篇原创文章 · 获赞 55 · 访问量 2201

猜你喜欢

转载自blog.csdn.net/weixin_44635198/article/details/104711248