题目描述
场歌唱比赛有不超过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
输入格式
共2行
第1行是一个正整数 n (不大于500) ,表示观众的人数;第2行有 n 个字符,表示每个观众投票的选手代号,相邻两个字符用空格隔开。题目数据保证每位选手至少有一票
输出格式
输出1行,有若干个整数,表示按选手得票数从高到低的排序结果,相邻两个整数用一个空格隔开
输入样例
8
DBCADADC
输出样例
3 2 2 1
程序如下
#include <iostream>
#include <algorithm>
using namespace std;
struct letter
{
char L;
int cs;
};
letter a[30];
bool cmp(letter x, letter y)
{
return x.cs > y.cs;
}
int main()
{
int i, n;
char x;
cin>>n;
for(i = 1; i <= n; i++)
{
cin>>x;
a[int(x - 'A' + 1)].L = x;
a[int(x - 'A' + 1)].cs++;
}
sort(a + 1, a + n + 1, cmp);
for(i = 1; i <= n; i++)
{
if(a[i].cs != 0)
cout<<a[i].cs<<" ";
}
return 0;
}
————————————————