【思路】:常规思路是存在则加一,不存在则插入。这次用的是先排序然后计算次数,两层循环就行。至于网上其他大神的二叉树巴拉巴拉的,我等写不出来。。
【注意】:最开始也写了个计算次数的,想用一层循环,不过细节不好处理,WA找不出原因就放弃了。
【AC代码】:
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <iomanip>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define MAX 1000+10
int cmp(const void *a, const void *b)
{
return strcmp((char*)a, (char*)b);
}
int main(int argc, char** argv) {
//freopen("in.txt", "r", stdin);
//freopen("out.txt", "w", stdout);
int n = 0;
while (cin >> n && n)
{
int i = 0, j = 0, mmax = 1;
char ballon[MAX][15+1];
char res[15+1];
for (i = 0; i < n; i++)
cin >> ballon[i];
//gets(ballon[i]);
qsort(ballon, n, sizeof(ballon[0]), cmp);
strcpy(res, ballon[0]);
for (i = 0; i < n; i++)
{
int cnt = 0;
for (j = i; !strcmp(ballon[i], ballon[j]); j++)
{
cnt++;
}
//cout << cnt << endl;
if (cnt > mmax)
{
mmax = cnt;
strcpy(res, ballon[i]);
}
i = j-1;
}
cout << res << endl;
}
return 0;
}