您的位置:首页 > 其它

问题 G: 整数连接

2016-06-24 01:12 197 查看
问题 G: 整数连接

题目描述
设有n个正整数,将它们联接成一排,组成一个最小的多位整数。例如,3个整数32,3,21连接成的最小整数为:21323。
既然这是第一个题,那就要简单一点,不然很多参赛选手会很伤心的,因此,我特地将这个题目简化了一下,限定n个正整数的取值为1至99之间的正整数。
输入
先输入正整数个数n的值(1<=n<=50);
然后输入n个正整数(取值范围为1~99)。
输出
输出n个正整数连接而成的最小整数。
样例输入
3
32 3 21
样例输出
21323
提示


这题如果是一个多位的可能会有意思的多,偏偏最多只有两位,也懒得想全当连cmp编写规则了

#include<stdio.h>
#include<stdlib.h>

int A[51];

int cmp(const void* a,const void*b)
{
int A=*(int *)a,B=*(int *)b;
int m,n;
if(A/10) m=A/10;else     m=A;
if(B/10) n=B/10;else     n=B;
if(A>10&&B>10) return A-B;
if(m>n)       return 1;
else if(m<n)  return -1;
else          return A%10-B%10;
}
int main(void)
{
int n;
while(~scanf("%d",&n))
{
for(int i=1;i<=n;i++) scanf("%d",&A[i]);
qsort(A+1,n,sizeof(A[0]),cmp);
for(int i=1;i<=n;i++) printf("%d",A[i]);
putchar('\n');
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: