一组正整数数目字,求这组数字能组成的最大数?有没有好解法

一组正整数数字,求这组数字能组成的最大数?有没有好解法?
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;
}