1055 气球

来源:互联网 发布:java zip打包下载 编辑:程序博客网 时间:2024/06/12 01:52

题目描述 Description

在刚刚过去的六一节里(虽然我们已经不是儿童了,也可以庆祝一下啊,哈哈),游乐园的天空中飘满了气球,明明对这些气球突然有了兴趣,他需要你的帮助!

你将会被告知气球的数量以及每个气球的颜色

相同颜色的气球数量被称为这种颜色的频率。

输入描述 Input Description

输入(balloon.in):第一行为N(N<=100),接下来的N行为1——N个气球的颜色(单词的长度不超过14个字母)!

输出描述 Output Description

输出 (balloon.out):第一行为气球颜色的总数.

从第二行开始,按照以下规则输出:

先输出最大频率(占一行);

再按词典顺序输出是这种频率的颜色,一种颜色占一行。

对其它所有频率按从大到小的顺序进行相同的操作(要保证操作了所有的频率与颜色)。

样例输入 Sample Input

样例输入1:

    5
green
red
blue
red
red

样例输入 2:

    3
pink
orange
pink

样例输出 Sample Output

样例输出 1:

    3

    3

    red

    1

    blue

green

样例输出 2:

    2

    2

    pink

    1

    orange


#include <iostream>#include <algorithm>#include <string.h>#include <cstring> using namespace std;struct st{string str;int num;};bool cmp(const st &x, const st &y){if (x.num > y.num){return true;}if (x.num == y.num){return x.str<y.str;}return false;}int main(){struct st s[110];string t;int n,i,j,k=0,M=0;cin>>n;for (i=0; i<n; i++){s[i].num = 1;}for (i=0; i<n; i++){cin>>t;for (j=0; j<k; j++){if (t.compare(s[j].str) == 0){s[j].num++;break;}}if (j == k){s[k++].str = t;   } }sort(s,s+k,cmp);cout<<k<<endl;cout<<s[0].num<<endl;cout<<s[0].str<<endl;for (i=1; i<k; i++){if (s[i].num!=s[i-1].num){cout<<s[i].num<<endl;}cout<<s[i].str<<endl;}return 0;}


0 0
原创粉丝点击