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
小鼠标 阅读(246)
评论(0) 编辑 收藏 引用