2014年4月3日木曜日

AOJ 0028 c

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



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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#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 件のコメント:

コメントを投稿