1038. Recover the Smallest Number (30)
2016-12-01 21:41
302 查看
1038. Recover the Smallest Number (30)
时间限制400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
Given a collection of number segments, you are supposed to recover the smallest number from them. For example, given {32, 321, 3214, 0229, 87}, we can recover many numbers such like 32-321-3214-0229-87 or 0229-32-87-321-3214 with respect to different orders
of combinations of these segments, and the smallest number is 0229-321-3214-32-87.
Input Specification:
Each input file contains one test case. Each case gives a positive integer N (<=10000) followed by N number segments. Each segment contains a non-negative integer of no more than 8 digits. All the numbers in a line are separated by a space.
Output Specification:
For each test case, print the smallest number in one line. Do not output leading zeros.
Sample Input:
5 32 321 3214 0229 87
Sample Output:
22932132143287
剑指offer,Q33
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 10010 char s[MAX][10]; char s1[30]; char s2[30]; int cmp(const void *a, const void *b) { strcpy(s1, (const char *)a); strcat(s1, (const char *)b); strcpy(s2, (const char *)b); strcat(s2, (const char *)a); return strcmp(s1, s2); } int main() { int N, i, j; int flag; //freopen("d:\\input.txt", "r", stdin); scanf("%d", &N); for (i = 0; i < N; ++i) { scanf("%s", s[i]); } qsort(s, N, sizeof(s[0]), cmp); flag = 0; for (i = 0; i < N; i++) { for (j = 0; s[i][j] != 0; j++) { if (s[i][j] != '0') { flag = 1; break; } } if (flag) { break; } } if (!flag) { puts("0"); return 0; } printf("%s", s[i] + j); for (i = i + 1; i < N; ++i) { printf("%s", s[i]); } return 0; }
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- 浅谈C语言转义字符和格式控制符
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C 语言简单加减乘除运算
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言二进制思想以及数据的存储