2011年8月20日 星期六

a218: 連猴子都會的小case

內容 :
    數數跟排序大概是我們從兩三歲起就開始訓練的技能,現在該是你好好發揮這個技能的時候了!

輸入說明 :
    輸入含多組測資。
    每組測資的第一行含一個整數n,1<=n<=1000,接下來有n個範圍為0-9的整數a1,a2,...,an。

輸出說明 : 把輸入的數字按照出現次數由多到少排序,若次數相同,優先輸出數值較小的數字。 參考範例輸出。

範例輸入 :
5
1 4 5 1 4
10
0 0 0 0 9 9 9 2 2 8

範例輸出 :
1 4 5
0 9 2 8

程式碼 :
#include<stdio.h>

int main()
{
    int i,j,k,n,temp,num[11][2];

    while(scanf("%d",&n)==1)
    {
        for(i=0; i<11; i++)
        {
            num[i][0] = -1;
            num[i][1] = 0;
        }

        for(i=0; i<n; i++)
        {
            scanf("%d",&temp);
            for(j=0; ; j++)
            {
                if(num[j][0] == -1)
                {
                    num[j][0] = temp;
                    num[j][1] = 1;
                    break;
                }
                else if(num[j][0] == temp)
                {
                    num[j][1]++;
                    break;
                }
            }
        }
        for(i=0; num[i][0]!=-1; i++)
            for(j=i+1; num[j][0]!=-1; j++)
                if((num[i][1] < num[j][1]) || ((num[i][1]==num[j][1]) && (num[i][0]>num[j][0])))
                {
                    for(k=0; k<2; k++)
                    {
                        temp = num[i][k];
                        num[i][k] = num[j][k];
                        num[j][k] = temp;
                    }
                }
        for(i=0; num[i][0]!=-1; i++)
            printf("%d ",num[i][0]);
        printf("\n");
    }
    return 0;

}



http://zerojudge.tw/ShowProblem?problemid=a218

沒有留言:

張貼留言