數數跟排序大概是我們從兩三歲起就開始訓練的技能,現在該是你好好發揮這個技能的時候了!
輸入說明 :
輸入含多組測資。
每組測資的第一行含一個整數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
沒有留言:
張貼留言