- 题目描述:
-
还记得陈博是个数字完美主义者么?^_^....这次,他又闹脾气了!我们知道计算机中常常要使用数组保存一组数字,但是今天他就要求把数组里的所有数字组成一个,并且这个数字是这些数字所能组成的所有数字中最小的一个,否则他会抓狂的!!!例如:数组{3,32,321},可以组成6个数字3|32|321, 3|321|32, 32|3|321, 32|321|3, 321|32|3, 321|3|32, 最小的就是321323 (321|32|3).
- 输入:
-
输入有多组数据,每组数据包括2行。
第一行包括一个整数n(1<=n<=100),表示数组的大小。接下来一行有n个正整数,每个数都满足[ 1, 1000,000,000 ]。
- 输出:
-
对应每组数据,输出这个数组所能组成的最小的那个数。
- 样例输入:
-
3 32 3 321 5 5 4 3 2 1
- 样例输出:
-
321323 12345
本来这个题是拿来热热身的,谁知道做的时候却被它难住了,主要的问题在于不知道怎么去比较两个数字的大小。开始觉的两个数比较大小时,不止局限于两个数本身,和其他数也有关系,后来发现自己
想错了。
两个数比较,把他们前后拼起来相应比较即可。
开始用的冒泡排序1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <algorithm> 5 6 char num[102][12]; 7 int ci[102]; 8 9 int cmp(int a, int b) { 10 char at[24], bt[24]; 11 int lena = strlen(num[a]); 12 int lenb = strlen(num[b]); 13 int i = 0; 14 for(int j = 0; j < lena; j++) { 15 at[i++] = num[a][j]; 16 } 17 for(int j = 0; j < lenb; j++) { 18 at[i++] = num[b][j]; 19 } 20 at[i] = '