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;
}