用给出的公式求出每个蘑菇的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; }
时间: 2024-10-05 12:31:24