题目描述
一场歌唱比赛有不超过26位选手参加,选手的代号依次用大写字母A、B、C…表示。在节目现场观众要给这些选手投票,每人投一票,选出最喜欢的选手。已知观众的投票记录,请将所有选手的得票数从高到低进行排序。
例如:有8个观众,他们投票的记录是: D B C A D A D C
其中A有2票,B有1票,C有2票,D有3票。
得票数从高到低排序的结果是3 2 2 1。
输入
第1行是一个正整数 n(不大于500),表示观众的人数;
第2行有 n 个字符,表示每个观众投票的选手代号,相邻两个字符用空格隔开。
题目数据保证每位选手至少有一票。
输出
输出1行,有若干个整数,表示按选手得票数从高到低的排序结果,相邻两个整数用一个空格隔开。
#include<iostream>
#include<algorithm>
using namespace std;
int cnt[27];
int main(){
int n;
char a;
cin>>n;
for(int i=0;i<n;i++){
cin>>a;
int f=a-'A';
cnt[f]++;
}
sort(cnt,cnt+26,greater<int>());
for(int i=0;i<26;i++){
if(cnt[i]!=0){
cout<<cnt[i]<<" ";
}
}
}