http://acm.nyist.net/JudgeOnline/problem.php?pid=540今年省賽時(shí)的第一道題。歡迎大家去刷河南省賽題。
一周沒(méi)有刷題,回生了,這么一道題花了兩個(gè)多小時(shí)。真不該跟妹子聊天。
題意:按數(shù)字倒序后的大小排序。
本打算把數(shù)字轉(zhuǎn)為字符串,然后對(duì)字符串用strcmy(),發(fā)現(xiàn)這樣是不對(duì)的,應(yīng)為"11"會(huì)小于"8",而事實(shí)是相反的。后來(lái)想到用兩個(gè)數(shù)組存原數(shù)和倒序后的數(shù),按倒序后的數(shù)排序后輸出正序的數(shù)字,終于A了。汗啊。
注意cmp()函數(shù)的寫(xiě)法。
。


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define LEN 60
int N, A, B;
int AB[LEN][2];
int Change(int n)


{
int t = 0;
while(n != 0)

{
t = t * 10 + n % 10;
n = n / 10;
}
return t;
}
int cmp(const void *a, const void *b)


{
int *a0 = (int*)a;
int *b0 = (int*)b;
return a0[1] - b0[1];
}
int main()


{
int i ,j;
int gard;
scanf("%d", &N);
while(N--)

{
scanf("%d%d", &A, &B);
for(i = A, j = 0; i <= B; i++, j++)

{
AB[j][0] = i;
AB[j][1] = Change(i);
}
qsort(AB, B - A + 1, sizeof(int) * 2, cmp);
gard = 0;
for(i = 0; i < B - A + 1; i++)

{
if(gard != 0)
printf(" %d", AB[i][0]);
else
printf("%d", AB[i][0]);
gard++;
}
printf("\n");
}
//system("pause");
}

posted on 2012-05-23 23:28
小鼠標(biāo) 閱讀(262)
評(píng)論(0) 編輯 收藏 引用