您的位置:首页 > 其它

ZOJ 2104

2010-05-12 11:10 218 查看
//2104 颜色数目最多的气球的颜色
//算法:先将给出的气球颜色输入进数组col[],然后逐个拿出数组col[]中第i个气球与剩下的n-i个比较,
// 总共比较n(n-1)/2次,比较过程中把重复的比较减去,实际比较远少于n(n-1)/2。

#include<iostream>
using namespace std;

struct Color
{
char str[20]; //记录气球颜色
bool flag; //减少重复计算
}col[1000];

int main()
{
int maxpos,curpos;
int curnum,maxnum;
int num;
int i;
for(i=0;i<1000;i++)
col[i].flag=0;

while(cin>>num && num!=0)
{
int count=num;
//循环输入气球颜色
while(count--)
{
cin>>col[num-count-1].str;
}
curpos=maxpos=0;
maxnum=0;
while(curpos<num)
{
int j=curpos+1;
curnum=0;
col[curpos].flag=1;

//对于第curpos个气球,让其与其余num-curpos个比较
while(j<num && col[j].flag==0)
{
if(!strcmp(col[curpos].str , col[j].str))
{
curnum++;
col[j].flag=1;
}
j++;
}
//比较并记录最大的颜色数
if(curnum>maxnum)
{
maxnum=curnum;
maxpos=curpos;
}
curpos++;

//跳过重复的curpos
while(col[curpos].flag==1)
curpos++;
}
cout<<col[maxpos].str<<endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: