题目很简单,大致意思是有多组测试数据,每组测试数据里找出出现次数最多的字符串,输入0结束。这个题没什么坑点,而且题目说了是唯一解。
用了结构体,algorithm里的sort函数就解决了,贴 C++的AC代码如下:
(PS:渣渣的第二贴,有改正或意见欢迎指出!)
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
struct ballons
{
public:
char color[20];
int time = 1;//出现的次数
};
bool cmp(ballons a, ballons b)
{
return a.time > b.time; // >= 是错的
}
int main()
{
int T;
while (~scanf("%d", &T)&&T)
{
int i, j;
int num=0; //不同颜色的气球个数
bool flag = false; //flag:判断该颜色是否出现过
ballons b[1001];
for (i = 0; i < T; i++)
{
char save[20];
scanf("%s", save);
for (j = 0; j < num; j++)
{
if (strcmp(b[j].color, save) == 0) //之前出现过
{
b[j].time++; //次数+1
flag = true;
}
}
if (flag == false)//之间没有出现过 储存到结构体数组中
strcpy(b[num++].color, save);
else flag = false;//这儿之前忘了 不要再粗心啦
}
sort(b, b + num, cmp);
printf("%s\n", b[0].color);
}
return 0;
}