Description
將輸入的N個整數,按照這些數的逆序數從小到大排序輸出。
數字的逆序:例如數字是123,則逆序數爲321
例如輸入的數據爲 122,432,321
則輸出 321 122 432
注意:輸出還是那些數,只是排序依據是其逆序數。
Input
第一行爲N (N<100)
其後的N行,每行一個正整數(均小於等於10000)
Output
按逆序數從小到大次序輸出,一行一個數
Sample Input
3
122
432
321
Sample Output
321
122
432
這題剛開始拿到手,哇,覺得好容易呀,做了之後發現總是不能accept,就很難受。冥思苦想後,猛然發現僅僅交換原來的數字是不夠的,還要交換它的逆序數纔可以。
代碼如下:
#include<stdio.h>
int main()
{
int a[100],c[100]={0};
int i,n,j=0,k,t;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
{
t=a[i];
while(t!=0)
{
c[i]=c[i]*10+t%10;
t=t/10;
}
}
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
if(c[i]>c[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
t=c[i];
c[i]=c[j];
c[j]=t;
}
}
for(i=0;i<n;i++)
printf("%d\n",a[i]);
return 0;
}