一组正整数数目字,求这组数字能组成的最大数?有没有好解法
一组正整数数字,求这组数字能组成的最大数?有没有好解法?
RT一组正整数数字,求这组数字能组成的最大数?有没有好解法?
------解决思路----------------------
RT一组正整数数字,求这组数字能组成的最大数?有没有好解法?
------解决思路----------------------
//一组正整数,求用这组正整数对应的数字字符串连在一起能组成的最大数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXN 20
#define MAXL MAXN*(10+1)
char ln[MAXL],*p;
unsigned int uis[MAXN];
int i,n,r;
int compare(const void *a,const void *b) {
char da[11],db[11],dab[21],dba[21];
sprintf(da,"%u",*(unsigned int *)a);
sprintf(db,"%u",*(unsigned int *)b);
sprintf(dab,"%s%s",da,db);
sprintf(dba,"%s%s",db,da);
return strcmp(dba,dab);
}
int main() {
fgets(ln,MAXL,stdin);
p=ln;
i=0;
while (1) {
r=sscanf(p,"%u%n",&uis[i],&n);
if (1==r) {
i++;
if (i>=MAXN) {
printf(">%d number is ignored.\n",MAXN);
break;
}
p+=n;
} else if (0==r) {
p++;
} else break;
}
n=i;
qsort(uis,n,sizeof(unsigned int),compare);
ln[0]=0;
for (i=0;i<n;i++) sprintf(ln,"%s%u",ln,uis[i]);
printf("%s\n",ln);
return 0;
}