2014年4月3日木曜日

AOJ 0028 c

AOJの0028、1~100までの整数を100件まで入力して最頻値を出力する問題。
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0028



最初に、頻度を記録する配列を用意したのですが、その時に
for(i = 0; i < 101; i++)
{
    freq[i] = 0;
}
と初期化するのはなんだか時間かかりそうだなあと思い、他の方法を探してみたら、
int freq[101]={0};
でいいんですね。知らなかった…。

#include <stdio.h>

int main(void)
{
    int num,i,max;
    int freq[101]={0};

    while(scanf("%d",&num) != EOF)
    {
        freq[num] += 1;
    }

    max = 0;
    for(i = 1; i < 101; i++)
    {
        if (max <= freq[i])
            max = freq[i];
    }
    for(i = 1; i < 101; i++)
    {
        if (freq[i] == max)
            printf("%d\n", i);
    }

    return 0;
}

0 件のコメント:

コメントを投稿