在网上看到一个写地很好的版本,学习完了,总结一下,实现思路是这样的:用两个数组,一个保存颜色,
另一个保存每个颜色对应的次数;实现过程---来了一个颜色,跟颜色数组里的每一个比较,
如果相同则将与颜色数组中该元素的位置对应的次数数组的元素加1,然后再把这个新来的颜色添加到颜色数组里面,
这样一来,在颜色数组中每个颜色出现第一次的位置对应的次数数组元素的值就是该颜色出现总次数-1.
每个颜色第二第三次出现的位置的次数值则一次递减(因为在他之前的颜色出现的时候没给它加1).
#include "stdafx.h"
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n,max;
string col;
while(cin>>n,n)
{
string color[1000]; //存颜色
int flag[1000]={0}; //颜色对应的下标
for(int i=0;i<n;++i){
int m=0; //记录已输入几个颜色
cin>>col;
while(m<i){
if(col==color[m]){
flag[m]++;
break;
}
m++;
}
color[i]=col;
}
max=0;
int index=0;
for(int i=0;i<n;++i){
if(max<flag[i]){
max=flag[i];
index=i;
}
}
cout<<color[index]<<endl<<flag[index]+1<<endl;
}
return 0;
}