Let the Balloon Rise
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 97201 Accepted Submission(s): 37153
This year, they decide to leave this lovely job to you.
A test case with N = 0 terminates the input and this test case is not to be processed.
5 green red blue red red 3 pink orange pink 0
red pink一 分析这道题要解决的问题很明确,也很简单,就是要统计每个字符串出现的次数,然后找出现最多的那一个。二 算法每次加入新的元素与之前出现的每一个进行一次比较,如果这个color之前出现过,这个color的数量就+1,如果我们仔细思考可以发现这个方法和我们人工统计的方法其实没有什么区别。三 数据结构确定了算法以后,我们就要根据我们设计的算法构造数据结构,根据上面算法的要求,我们需要一个能存放字符串的数组,和一个能存放次数的数组,并且这两个数组能通过其数组下标一一准确对应起来。//
// main.cpp
// 1004
//
// Created by 张嘉韬 on 16/1/9.
// Copyright © 2016年 张嘉韬. All rights reserved.
//
#include <iostream>
#include <cstring>
using namespace std;
int main(int argc, const char * argv[]) {
//freopen("/Users/zhangjiatao/Desktop/input.txt","r",stdin);
int n;
while(cin>>n)
{
if(n==0) break;
char color[1001][16];
int counter[1001];
memset(counter,0,sizeof(counter));
for(int i=1;i<=n;i++)
{
cin>>color[i];
counter[i]=1;
}
for(int i=1;i<=n-1;i++)
{
for(int j=i+1;j<=n;j++)
{
if(strcmp(color[i],color[j])==0)
counter[i]++;
}
}
int max,maxnum;
max=0,maxnum=0;
for(int i=1;i<=n;i++)
{
if(counter[i]>max)
{
max=counter[i];
maxnum=i;
}
}
cout<<color[maxnum]<<endl;
}
return 0;
}
四 总结1.上边的代码用了跟简单的一种方法,先把所有的字符串储存起来,再跟其之前的所有字符串相比较,最后再统计最大的次数。