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