用给出的公式求出每个蘑菇的grade,求出现次数最多的grade。如果有多个grade出现的次数一样多,且还有其他的grade,则把这些出现次数最多的grade按升序输出;否则,输出“Bad Mushroom”。注意当方案数只有一种的时候直接输出这个方案。
程序乱搞。。。 用很难看的姿势A掉了。。。
#include "stdio.h"
#include "string.h"
int main()
{
int Case,ii,n,x,key,ans,ans2,first,i; // key记录答案数是否唯一,ans2记录次小值
int hash[10010];
scanf("%d",&Case);
for (ii=1;ii<=Case;ii++)
{
scanf("%d",&n);
memset(hash,0,sizeof(hash));
while (n--)
{
scanf("%d",&x);
hash[10000-(100-x)*(100-x)]++;
}
printf("Case #%d:\n",ii);
key=0;
ans=0;
ans2=0;
for (i=0;i<=10000;i++)
if (hash[i]>ans)
{
key=1;
ans2=ans;
ans=hash[i];
}
else
if (ans==hash[i] && hash[i]!=0)
key++;
else
if (hash[i]<ans && hash[i]!=0)
ans2=hash[i];
if (key>1 && ans2==0)
{
printf("Bad Mushroom\n");
continue;
}
first=1;
for (i=0;i<=10000;i++)
if(hash[i]==ans)
{
if (first==0) printf(" ");
first=0;
printf("%d",i);
}
printf("\n");
}
return 0;
}