2 10 1 2 3 4 5 6 7 8 9 10 5 3 3 3 3 3
1 3
我们对于每个ai 都进行计数,即b[ai]++ ,如此之后,我们可以一个循环语句i=1?>n 来寻找最大的bi ,注意此时应是bi>MAX ,而不是bi≤MAX ,这样才能保证出现的是编号最小的。另外需要注意的是每次做完后数组应当清0,否则会影响下次的答案,由于各种非确定性因素我在小数据就已经把没清0的程序卡死了。
代码:
#include <iostream> #include <cstdio> #include <cstring> using namespace std; int a[110]; int main() { int t,n; scanf("%d",&t); while(t--) { scanf("%d",&n); memset(a,0,sizeof(a)); int max=0; for(int i=0;i<n;i++) { int x; scanf("%d",&x); a[x]++; if(a[x]>max) max=a[x]; } int ans; for(int i=0;i<=n;i++) if(a[i]==max) { ans=i; break; } printf("%d\n",ans); } return 0; }
hdu 5123 who is the best?(Bestcoder Round #20)
原文:http://blog.csdn.net/caduca/article/details/41620199