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


#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
小鼠標 閱讀(253)
評論(0) 編輯 收藏 引用