1055 气球

1055 气球

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
题目描述 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

数据范围及提示 Data Size & Hint
 

分类标签 Tags 

 

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
string color[1000],c;
int a[1000],flag=0,tmp=0;
int n,u,up,count=0;
int main(){
    scanf("%d",&n);
    for(int i=1;i<=n;i++){
        cin>>c;
        for(int j=1;j<i;j++){
            if(c==color[j]){
                a[j]++;flag=1;
            }
        }
        if(flag==0){
            count++;color[i]=c;a[i]++;
        }
        flag=0;
    }
    printf("%d\n",count);
    while(count--){
        up=a[1];u=1;//排序:a[i]第一关键字 color[i]第二关键字
        for(int i=1;i<=n;i++){
            if(a[i]>up){
                up=a[i];u=i;
            }
            if(a[i]==up){
                if(color[i]<color[u]){
                    up=a[i];u=i;
                }
            }
        }
        if(up!=tmp){//判断数量重复情况 
            cout<<up<<endl<<color[u]<<endl;
            a[u]=0;tmp=up;
        }
        else{
            cout<<color[u]<<endl;
            a[u]=0;
        }
    }
    return 0;
}

 

posted @ 2016-06-03 20:46  神犇(shenben)  阅读(412)  评论(0编辑  收藏  举报