[Atelier Blue アトリエブルー]Homeコンテストパソコン甲子園2004年予選>3問目

3問目(最頻値)

問題

1~100の整数データをファイルから読み込んで、データの最頻値を出力する。入力データは、カレントディレクトリの「003.txt」に保存されている。また、データは100件以内。

入力

整数データ(100件以内)

出力

整数データの最頻値(複数アル場合は、改行して全て表示)

入力例


5
6
5
8
7
5
9
7
3
4
7

出力例


5
7

解き方例

まず、100個の要素が入る配列を用意します。後は、ひたすらインクリメント。そして、一番出てきた数が多いものを探して出力です。

ソースコード

お持ち帰り

C/C++

#include <stdio.h>

int main(){
    int out[101];

    int in;
    int max;
    int i;
    FILE *fp;

    for(i=0;i<101;i++)out[i]=0;

    fp = fopen("003.txt","r");

    while(EOF != fscanf(fp,"%d",&in)){
        out[in]++;//入力に応じた要素をインクリメント
    }

    //もっとも現れた数の回数を探索
    max=0;
    for(i=0;i<101;i++){
        if(max<out[i])max = out[i];
    }

    //もっとも現れた数達を出力
    for(i=0;i<101;i++){
        if(max == out[i])printf("%d\n",i);
    }

    return 0;
}

その他

コレを発展させると瓶ソートになるかもしれません。


ページの一番上へ
前のページへ 一覧に戻る 次のページへ
初版2006-7-23
[Atelier Blue アトリエブルー]Homeコンテストパソコン甲子園2004年予選>3問目