Let the Balloon Rise

第一次来如此高大上的地方写自己有关专业的博客,各位见笑。 = =




以上是这道题目的原文,翻译一下就是多组数据,输入颜色,输出出现频率最高(也就是出现次数最多)的颜色。

分析:

一开始多组数据的框架当然是很简单的,这道题唯一的难点就在于如何储存所谓的颜色出现次数吧。

既然是储存,那么数组当然是对我们来说最好的选择。用数组下标记录出现次数,用数组储存颜色。


代码如下:
#include<iostream>

#include<stdio.h>

#include<string.h>

using namespace std;

int main(){

    char a[1000][20];                   //建立一个字符型二维数组
    int t;                                         // t 是颜色出现次数
    int n,i,j,m,p;                   //n为组数,i j是循环计数数字,m是最大次数,p是位置
    while(cin>>n&&n)
    { 
        getchar();                            //取消回车的影响 同样可以用scanf(“%d\n”,&n);(在while后的括号中即可)
        for(i=0;i<n;i++)
        {
            gets(a[i]);
        }  
        m=1;                                //记录初始次数
        p=0;                                //记录颜色的单词出现在数组中的位置
        for(i=0;i<n;i++)
        {    
            t=1;
            if(a[i][0]=='\0') continue;
            for(j=i+1;j<n;j++)
            {
                if(a[j][0]=='\0') continue;
                if(strcmp(a[i],a[j])==0)     //与下一个颜色比较 若相同,t++
                { 
                    t++;                    
                    a[j][0]='\0';            //将该字符变为\0,继续循环
                }  
            }
            if(t>m)                      //比较出现次数
            {
                m=t;
                p=i;
            }
        }
        puts(a[p]);
    }
    return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值