天天看點

五顔六色的氣球

FJNU.1975

Description

遊樂園的天空中飄滿了氣球,明明對這些氣球突然有了興趣,他需要你的幫助 

你将會被告知氣球的數量以及每個氣球的顔色

相同顔色的氣球數量被稱為這種顔色的頻率。

Input

第一行為N(N<=100),接下來的N行為1~N個氣球的顔色(單詞的長度不超過14個字母)

Output

第一行為氣球顔色的總數.

從第二行開始,按照以下規則輸出:

先輸出最大頻率(占一行);

再按詞典順序輸出是這種頻率的顔色,一種顔色占一行。

對其它所有頻率按從大到小的順序進行相同的操作(要保證操作了所有的頻率與顔色)。

Sample Input

5

green

red

blue

red

red

3

pink

orange

pink

Sample Output

3

3

red

1

blue

green

2

2

pink

1

orange

Source

2007'福建師範大學低年級學生程式設計大賽

My Program

五顔六色的氣球

#include < iostream >

五顔六色的氣球

#include < string .h >

五顔六色的氣球

using   namespace  std;

五顔六色的氣球

char  color[ 100 ][ 14 ];

五顔六色的氣球
五顔六色的氣球

int  N,c = 0 ,a[ 100 ] = ... {0} ;

五顔六色的氣球
五顔六色的氣球

void  InColor( char  tc[])

五顔六色的氣球
五顔六色的氣球

... {

五顔六色的氣球

    int i;

五顔六色的氣球

    for(i=0;i<c;i++)

五顔六色的氣球

        if(!strcmp(tc,color[i]))

五顔六色的氣球
五顔六色的氣球

        ...{

五顔六色的氣球

            a[i]++;

五顔六色的氣球

            return;

五顔六色的氣球

        }

五顔六色的氣球

    strcpy(color[c],tc);

五顔六色的氣球

    a[c++]=1;

五顔六色的氣球

}         

五顔六色的氣球
五顔六色的氣球

int  main()

五顔六色的氣球
五顔六色的氣球

... {

五顔六色的氣球

    int i,j,t;

五顔六色的氣球

    char tc[14];

五顔六色的氣球

    cin>>N;

五顔六色的氣球

    for(i=0;i<N;i++)

五顔六色的氣球
五顔六色的氣球

    ...{

五顔六色的氣球

        cin>>tc;

五顔六色的氣球

        InColor(tc);

五顔六色的氣球

    }

五顔六色的氣球

    cout<<c<<endl;

五顔六色的氣球

    for(i=0;i<c;i++)

五顔六色的氣球

        for(j=i+1;j<c;j++)

五顔六色的氣球

            if(a[i]<a[j])

五顔六色的氣球
五顔六色的氣球

            ...{

五顔六色的氣球

                strcpy(tc,color[i]);

五顔六色的氣球

                strcpy(color[i],color[j]);

五顔六色的氣球

                strcpy(color[j],tc);

五顔六色的氣球

                t=a[i];

五顔六色的氣球

                a[i]=a[j];

五顔六色的氣球

                a[j]=t;

五顔六色的氣球

            }

五顔六色的氣球

    for(i=0;i<c;i++)

五顔六色的氣球

        for(j=i+1;j<c;j++)

五顔六色的氣球

            if(a[i]==a[j])

五顔六色的氣球
五顔六色的氣球

            ...{

五顔六色的氣球

                t=0;

五顔六色的氣球

                while(color[i][t]==color[j][t])

五顔六色的氣球

                    t++;

五顔六色的氣球

                if(color[i][t]>color[j][t])

五顔六色的氣球
五顔六色的氣球

                ...{

五顔六色的氣球

                    strcpy(tc,color[i]);

五顔六色的氣球

                    strcpy(color[i],color[j]);

五顔六色的氣球

                    strcpy(color[j],tc);

五顔六色的氣球

                }

五顔六色的氣球

            }

五顔六色的氣球

    for(i=0;i<c;i++)

五顔六色的氣球
五顔六色的氣球

    ...{

五顔六色的氣球

        cout<<a[i]<<endl;

五顔六色的氣球

        j=i;

五顔六色的氣球

        cout<<color[i]<<endl;

五顔六色的氣球

        while(j<c&&a[i+1]==a[j]&&i+1<c)

五顔六色的氣球
五顔六色的氣球

        ...{

五顔六色的氣球

            i++;

五顔六色的氣球

            cout<<color[i]<<endl;

五顔六色的氣球

        }

五顔六色的氣球

    }

五顔六色的氣球

    return 0;

五顔六色的氣球

}

YOYO's Note:

不過是輸入,比較,計數,最後排序輸出而已。資料很弱,是以這個程式是0.00s……

 比賽當時很緊張,題目都沒有好好審。

在輸出的時候我看到SAMPLE順序,還以為是按輸入的倒序輸出,

花了很長時間去想倒序要怎麼寫,送出WA了之後認真地看了一下題目,

才發現有按詞典順序輸出 - - !超郁悶地亂寫了個sort,一下AC。

那個時候我還不會用STL,自己亂寫的不倫不類,既不選擇又不冒泡……

至今還不會寫…… T-T 資料結構這方面真的是爛到可以……

繼續閱讀