HDoj 1004 Let the Balloon Rise
Posted wzmm
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDoj 1004 Let the Balloon Rise相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章
HDOJ 1004 Let the Balloon Rise (字符串+stl)
HDOJ 1004 - Let the Balloon Rise(让气球飞起来)