你的代码有很多地方是没必要的,可以改
比如:在if(c==b[j]){e[j]++; flag=1;} 里面可以加break;
还有连续输入为什么不写成
while(cin >> a){ if(a==0) break; ....... } 不会觉得这样直观很多吗?当然这是个人习惯问题,这是题外话,见谅
你这个过不了这个数据(暂时发现的):
先输入
3
a
w
w
紧接着输入:
1
a
会报错
下面是我 根据你的思路, 改良过的, 能AC
#include
#include
using namespace std;
int main()
{
int a;
string str, all[1000];
while(cin >> a){
if( a == 0) break;
int i, sum[1000], num = 0, ans;
memset(sum, 0, sizeof(int)*1000);
cin >> all[0]; //第一次不管输入什么, 都会被保存的
num++; // 不同颜色的总数 变成1
sum[0] = 1;
ans = 0; //初始化答案的下标是第一个
for(i = 1; i < a; ++i){
cin >> str;
int j;
for(j = 0; j < num; ++j){
if(str == all[j]){
break;
}
}
if(j < num){
sum[j]++;
if(sum[j] > sum[ans]) ans = j;
}
else{
all[ num ] = str;
sum[ num ] = 1;
num++;
}
}
cout << all[ans] << endl;
}
return 0;
}