【ACM】nyoj_540_奇怪的排序_201308050951
奇怪的排序
時間限制:1000 ms? |? 內存限制:65535 KB
難度:1
描述
最近,Dr. Kong 新設計一個機器人Bill.這臺機器人很聰明,會做許多事情。惟獨對自然數的理解與人類不一樣,它是從右往左讀數.比如,它看到123時,會理解成321.讓它比較23與15哪一個大,它說15大。原因是它的大腦會以為是32與51在進行比較.再比如讓它比較29與30,它說29大.
給定Bill兩個自然數A和B,讓它將 [A,B] 區間中的所有數按從小到大排序出來。你會認為它如何排序?
輸入
第一行: N表示有多少組測試數據. (2<=N<=5 )
接下來有N行,每一行有兩個正整數A B表示待排序元素的區間范圍. (1<=A<=B<=200000 B-A<=50)
輸出
對于每一行測試數據,輸出一行,為所有排好序的元素,元素之間有一個空格.
樣例輸入
2
8 15
22 39
樣例輸出
10 8 9 11 12 13 14 15
30 31 22 32 23 33 24 34 25 35 26 36 27 37 28 38 29 39
?
?
#include <stdio.h>
#include <stdlib.h>
struct IN
{
?int a;//原數
?int b;//逆序后的數
};
struct IN s[60];
/*
int nixu(int n,int i)
{
?int m=0;
?s[i].a=n;
?while(n>0)
?{
??m=m*10+n%10;
??n/=10;
?}
?s[i].b=m;
?return 0;
}
*/
/*
int cmp(const void *a,const void *b)
{
?struct IN *c = (struct IN *)a;
?struct IN *d = (struct IN *)b;
?return c->b - d->b;
}*/
//另一種qsort排序,與下面的幾行作用相同
int cmp( const void *a ,const void *b)?
{?
??? return (*(struct IN *)a).b > (*(struct IN *)b).b ? 1 : -1;?
}?
int main()
{
?int N;
??? scanf("%d",&N);
??while(N--)
??{
???int i,j,m,n,a,b;
???scanf("%d %d",&m,&n);
???for(j=0,i=m;i<=n;i++)
???{
????a=i;b=0;
??????????????? s[j].a=a;
???????????? while(a>0)
???????????? {
????????????? b=b*10+a%10;
????????????? a/=10;
???????????? }
???????????? s[j].b=b;
???????????? j++;
???}
???/*for(j=0,i=m;i<=n;i++)
???{
??????????????? nixu(i,j);
??????????????? j++;
????}*/
//這個顏色的為調用自定義函數時的解法
???qsort(s,n-m+1,sizeof(s[0]),cmp);
???for(i=0;i<n-m+1;i++)
???{
????if(i<n-m)
????printf("%d ",s[i].a);
????else
????printf("%d\n",s[i].a);
???}?
??}
?return 0;
}
轉載于:https://www.cnblogs.com/xl1027515989/p/3237870.html
總結
以上是生活随笔為你收集整理的【ACM】nyoj_540_奇怪的排序_201308050951的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: How Tomcat Works(八)
- 下一篇: 字符转十六进制 String = HEX