一组数字,求其能组成的最大数?
来源:互联网 发布:雷盾网络验证源码 编辑:程序博客网 时间:2024/05/22 04:44
//一组正整数,求用这组正整数对应的数字字符串连在一起能组成的最大数
#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);
getchar();
return 0;
#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);
getchar();
return 0;
}
来自csdn一位版主,写的很好!
0 0
- 一组数字,求其能组成的最大数?
- 一组数字,求能组成的最大数
- 求一组数字组成的最大整数三种解法
- 打印一组数字中最大数及出现的次数
- 删除一组数中重复的数字
- Java从键盘中读取一串数字存入数组,并返回元素组成的最大数
- 面试题01 由四个数字组成的一个最大数和最小数,最大数减去最小数正好是这四个数字组成的另外一个数n,求n的值
- Javascript 找一组数字中的最大数的方法(附使用Math.max来检测浏览器支持哪个属性)
- 建立链表,在一组有序数种添加一个数,再次组成一组有序的数
- 算法题:给出一组数字,拼接一个最大的值
- 面试:1,2,3,4四个数能组成多少个无重复数字的三位数?分别是?
- LINUX Shell:比较一组数的大小,输出最大者
- 求一组数中前k个最大的数
- C++ 分糖果问题-求一组数的最大公倍数
- java 把一组数字转成乘10的次方数
- C语言找一组数中单独出现的数字
- (使用STL自带的排序功能进行排序)UVA 10905 Children's Game(求一组数据所能拼出的最大数字串)
- 4数字能组成多少无重复的三位数
- 经典c程序100例==21--30
- Keepalived在 ubuntu完整安装版
- 经典c程序100例==31--40
- clob字符串类型
- 慢慢了解慢慢深入熟练掌握
- 一组数字,求其能组成的最大数?
- 经典c程序100例==41--50
- 经典c程序100例==51--60
- 经典c程序100例==61--70
- 经典c程序100例==71--80
- H264 动态码率
- 经典c程序100例==81--90
- mysql表结构操作
- 经典c程序100例==91--100