IBM技术俱乐部主席竞选
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 613 测试通过 : 240
起初b值没初始化,总是运行时错误,后来看到自己把每个can对象的count值初始化为0还有把每次加count的值搞错了,==是不是错误很多==,弱菜求轻喷,把count值初始为1,外加判断,最后是b值,应该就可以AC了。。。
总提交 : 613 测试通过 : 240
题目描述
今天IBM技术俱乐部举行主席竞选,你的任务是统计谁是得票最多的候选人。
输入
输入数据包含多组测试案例。
每组测试案例由N(0<N<1000)开头,N表示投票总数,后续N行每行包含一个参加主席竞选的候选人代号(多达18个字母或数字),表示得到有效选票。
一个测试案例的N=0表示输入的结束,无需处理。
输出
对于每个测试用例,把得票最多的候选人名字打印在单独一行上。每个测试案例都仅有一种候选得票是最多的。
样例输入
6
young
CS
showtyt
Titan
young
zt
4
M07000315
sed
B07031006
M07000315
0
样例输出
young
M07000315
题目来源
南京邮电大学计算机学院首届ACM程序设计大赛(2009)
实现代码:
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
using namespace std;
int n,m;
struct Candidate
{
char name[20];
int count;
};
int main()
{
while(scanf("%d",&n)==1&&n!=0)
{
Candidate *can=new Candidate[n+1];
for(int i=0;i<n;i++){
can[i].count=1;
}
for(int i=0;i<n;i++){
scanf("%s",&can[i].name);
for(int j=0;j<i;j++)
if(strcmp(can[i].name,can[j].name)==0)
{
can[j].count++;
}
}
int max=0,b=0;
for(int i=0;i<n;i++)
{
if(max<can[i].count)
{
max=can[i].count;
b=i;
}
}
printf("%s\n",can[b].name);
}
}
起初b值没初始化,总是运行时错误,后来看到自己把每个can对象的count值初始化为0还有把每次加count的值搞错了,==是不是错误很多==,弱菜求轻喷,把count值初始为1,外加判断,最后是b值,应该就可以AC了。。。