HDOJ1004
题目
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
思路
我的方法比较简单。
定义一个字符串数组string str[1000]和一个int型的数组a[1000],a记录每个对应的颜色出现的次数。
每次输入一种颜色,就和之前str数组已经存在的元素比较,若出现重复,对应的a中的元素加一;若是一种新的未出现过的颜色,则str数组中就多了一个新的元素,并且数组a中对应的值为1。
代码
//C++代码
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
int N, count;
int i, j, maxm, max;
string str[1000];
int a[1000];
while(~scanf("%d", &N)&&N!=0)
{
memset (a, 0, sizeof(a));
for(i=0;i<str[i].size();i++)
{
str[i] = "";
}
count=0;
for(i=0;i<N;i++)
{
string s;
cin>>s;
for(j=0;j<count;j++)
{
if(s.compare(str[j])==0)
{
a[j]++;
break;
}
}
if(j==count)
{
str[count] = s;
a[count]=1;
count++;
}
}
max = a[0];
maxm = 0;
for(i=0;i<count;i++)
{
if(a[i]>max)
{
max = a[i];
maxm = i;
}
}
cout<<str[maxm]<<endl;
}
}
Conclusion
注意题目要求:输入0程序就结束了!
所以while循环里的条件是scanf("%d", &N)&&N!=0