AOJ_0028 Mode Value
問題
やるだけ。
はじめ、与えられる整数が100以下という条件をよみ忘れていて、へんなことをしていた。
#include <cstdio> #include <algorithm> using namespace std; int n[101]; int main(){ int i,m=0; while(scanf("%d", &i) != EOF)n[i]++; for(i=0;i<101;i++)m=max(m,n[i]); for(i=0;i<101;i++)if(m==n[i])printf("%d\n",i); return 0; }
↓100以上でもOKなコード
#include <cstdio> #include <algorithm> using namespace std; typedef pair<int,int> D; D n[100]; int d_size = 0; int mode[100]; int main(){ int t,m=0; while(scanf("%d", &t) != EOF){ bool f = true; for(int i = 0; i < d_size; i++){ if(n[i].first == t){ f = false; n[i].second++; m=max(m,n[i].second); } } if(f){ n[d_size] = D(t,1); m=max(m,n[d_size].second); d_size++; } } int j = 0; for(int i = 0; i < d_size; i++){ if(n[i].second == m){ mode[j] = n[i].first; ++j; } } sort(mode, mode + j); for(int i = 0; i < j; i++) printf("%d\n", mode[i]); return 0; }