首页 > 代码库 > hdu 5123 who is the best?(Bestcoder Round #20)
hdu 5123 who is the best?(Bestcoder Round #20)
who is the best?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 128 Accepted Submission(s): 87
Problem Description
There are N people want to choose the best person. Each person select the best person ai , .John wants to know that who received the most number of votes.
Input
The first line contains a single integer T(1≤T≤50) ,indicating the number of test cases.
Each test case begins with an integerN(1≤N≤100) ,indicating the number of person.
Next N lines contains an integerai(1≤ai≤N) .
Each test case begins with an integer
Next N lines contains an integer
Output
For each case, output an integer means who is the best person. If there are multiple answers, print the minimum index.
Sample Input
2 10 1 2 3 4 5 6 7 8 9 10 5 3 3 3 3 3
Sample Output
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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。