13年12月CCF计算机软件能力认证,第1题
第一次提交,数据范围写错了,wa,日常迷糊,太久不写题了。
第二次提交,试图在一次循环内解决,但忘了判断答案是否为最小的数,wa。
真没必要在螺蛳壳里做道场。在简单题里降低时间复杂度,没有什么实际意义,反而提高错误率。能快速ac的代码,才是好代码!
常规解法,两次循环的ac代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 10000+1;
int cnt[N];
int main(){
int n,ans = 0;
cin>>n;
while(n--){
int x;
cin>>x;
cnt[x]++;
}
for(int i = 1;i <= N;i++){
if(cnt[i] > cnt[ans]) ans = i;
}
cout<<ans;
return 0;
}
一次循环的ac代码:
#include<bits/stdc++.h>
using namespace std;
const int N = 10000+1;
int cnt[N];
int main(){
int n,ans = 0,max = 0;
cin>>n;
while(n--){
int x;
cin>>x;
cnt[x]++;
if(cnt[x] > max){
max = cnt[x];
ans = x;
}else if(cnt[x] == max){
if(x < ans) ans = x;
}
}
cout<<ans;
return 0;
}
标签:13,12,int,max,cnt,cin,3192,ans,ac From: https://www.cnblogs.com/infocodez/p/17431170.html