九度OJ 1504 把数组排成最小的数【算法】-- 2009年百度面试题
2014-02-17 09:48
267 查看
题目地址:http://ac.jobdu.com/problem.php?pid=1504
题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
输入:
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
输入的第二行包括m个正整数,其中每个正整数不超过10000000。
输出:
对应每个测试案例,
输出m个数字能排成的最小数字。
样例输入:
样例输出:
参考资料:何海涛 -- 程序员面试题精选100题(41)-把数组排成最小的数[算法]
题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
输入:
输入可能包含多个测试样例。
对于每个测试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
输入的第二行包括m个正整数,其中每个正整数不超过10000000。
输出:
对应每个测试案例,
输出m个数字能排成的最小数字。
样例输入:
3 23 13 6 2 23456 56
样例输出:
13236 2345656
#include <stdio.h> #include <string.h> #include <stdlib.h> int compare (const void * p, const void * q){ char str1[20]; char str2[20]; strcpy (str1, (const char *)p); strcat (str1, (const char *)q); strcpy (str2, (const char *)q); strcat (str2, (const char *)p); return strcmp (str1, str2); } int main (void){ char str[100][10]; int m; int i; while (scanf ("%d", &m) != EOF){ for (i=0; i<m; ++i){ scanf ("%s", &str[i]); } qsort (str, m, sizeof(char) * 10, compare); for (i=0; i<m; ++i){ printf ("%s", str[i]); } putchar ('\n'); } return 0; }
参考资料:何海涛 -- 程序员面试题精选100题(41)-把数组排成最小的数[算法]
相关文章推荐
- 九度OJ 1504 把数组排成最小的数【算法】-- 2009年百度面试题
- 【剑指Offer面试题】 九度OJ1504:把数组排成最小的数
- 【剑指Offer面试题】 九度OJ1386:旋转数组的最小数字
- 九度OJ-题目1504:把数组排成最小的数
- 九度oj 1504:把数组排成最小的数 (贪心)
- 【九度OJ1386】|【剑指offer8】旋转数组的最小数字
- 剑指Offer - 九度1504 - 把数组排成最小的数
- 【剑指Offer面试题】 九度OJ1371:最小的K个数
- 九度 1504:把数组排成最小的数
- 【大家来一起讨论吧】百度面试题,假设一整型数组存在若干正数和负数,现在通过某种算法使得该数组的所有负数在正数的左边,且保证负数件和正数间元素相对位置不变。时空复杂度要求:o(n),o(1)
- 【白话经典算法系列之十二】数组中只出现1次的两个数字(百度面试题)
- Google面试题 数组中第K小的数字 九度oj 1534
- 【九度】题目1504:把数组排成最小的数
- 【百度面试题】把数组排成最小的数
- 九度 题目1504:把数组排成最小的数
- 白话经典算法系列之十二 数组中只出现1次的两个数字(百度面试题)
- 整型数组处理算法(九)给定任意一个正整数,求比这个数大且最小的“不重复数”(性能优化)[2014百度笔试题]
- 算法面试题——两个有序数组,将一个数组放入另一个空间很大的数组,要求合并之后依然有序,时间复杂度要求最小,不使用额外的数组。
- 【白话经典算法系列之十二】数组中只出现1次的两个数字(百度面试题)
- 【剑指Offer面试编程题】题目1386:旋转数组的最小数字--九度OJ