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;
}

 

转载于:https://www.cnblogs.com/shenben/p/5557544.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值