码迷,mamicode.com
首页 > 其他好文 > 详细

HDoj 1004 Let the Balloon Rise

时间:2020-02-01 16:05:23      阅读:66      评论:0      收藏:0      [点我收藏+]

标签:tip   each   代码   nat   start   sse   ret   ssi   code   

Problem Description
Contest time again! How excited it is to see balloons floating around. But to tell you a secret, the judges‘ favorite time is guessing the most popular problem. When the contest is over, they will count the balloons of each color and find the result.

This year, they decide to leave this lovely job to you.

 

Input
Input contains multiple test cases. Each test case starts with a number N (0 < N <= 1000) -- the total number of balloons distributed. The next N lines contain one color each. The color of a balloon is a string of up to 15 lower-case letters.

A test case with N = 0 terminates the input and this test case is not to be processed.

 

Output
For each case, print the color of balloon for the most popular problem on a single line. It is guaranteed that there is a unique solution for each test case.

 

Sample Input
5
green
red
blue
red
red
3
pink
orange
pink
0

 

Sample Output
red
pink 

 

Author
WU, Jiazhi

Source
ZJCPC2004

 

 

个人题解:本道题简要意思就是给你一堆颜色序列,让你找出出现次数最多的那个颜色。   起初我想用哈希数组,二十六个英文字母作为键,统计颜色单词中首字母哪个出现的最多并记录下来,第二个字母谁出现的最多并记录下来。再利用统计好的字母按顺序进行搜索,搜索到了就对其颜色进行输出。例如:颜色序列是 pink ,red,pink,blue,brown。如此统计下来 首字母p出现频率最高,第二个字母出现频率最高,利用p和i按顺序搜索,搜索到pink,输出。       但是提交发现答案错误,推测可能是有些颜色首字母和第二个字母相同。

后来,看到了网上的方法,为每一个输入都设置配套一个数组(类似于哈希表,但是目前字符串-整型的c++哈希映射我还不会,故参考了网上的方法),每输入一个颜色时,都将其与前面已经输入过的颜色进行比较,如果相同,则在前面颜色键(即最早出现这个颜色的输入)上的值+1,统计过后,搜索哪个键上的值最大,取得最大值对应的键的下标,输出该下标下的颜色。

代码如下:

 

#include<stdio.h>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
string ball[1000];
int num[1000];
int main()
{
    int n=0;
    while(scanf("%d",&n)!= EOF)
    {
        if(n==0)
            continue;
        for(int i=0;i<1000;i++)
        {
            ball[i]="";
            num[i]=0;
        }
        for(int i=0;i<n;i++)
        {
            cin>>ball[i];
            for(int j=0;j<i;j++)
            {
                if(ball[i]==ball[j])
                    num[j]++;
            }
        }
        int max= max_element(num, num+1000)-num;
        cout<<ball[max]<<endl;
    }
 } 

 

HDoj 1004 Let the Balloon Rise

标签:tip   each   代码   nat   start   sse   ret   ssi   code   

原文地址:https://www.cnblogs.com/wzmm/p/12248690.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!