转载请注明出处:http://blog.csdn.net/ns_code/article/details/28128551

题目描写叙述:

输入一个正整数数组,把数组里全部数字拼接起来排成一个数。打印能拼接出的全部数字中最小的一个。

比如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

输入:

输入可能包括多个測试例子。
对于每一个測试案例,输入的第一行为一个整数m (1<=m <=100)代表输入的正整数的个数。
输入的第二行包括m个正整数,当中每一个正整数不超过10000000。

输出:

相应每一个測试案例,
输出m个数字能排成的最小数字。

例子输入:
3
23 13 6
2
23456 56
例子输出:
13236
2345656

这道题主要要自己定义一个比較组合后的数字的大小的规则,主要是对于数字m和n,先将其转化为字符串,而后比較其组合mn和nm的大小,这里直接依照字符串的大小标准来比較就可以,最后用qsort进行排序。排序后的字符串数组中的字符串从左向右组合起来的字符串即使最小的字符串,即转化为整数后为最小的整数。

AC代码例如以下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>char strs[100][10];/*
自己定义比較规则
*/
int mycompare(const void *str1,const void *str2)
{static char s1[20];static char s2[20];char *string1 = (char *)str1;char *string2 = (char *)str2;//将两个字符串合并在一起sprintf(s1,"%s%s",string1,string2);sprintf(s2,"%s%s",string2,string1);return strcmp(s1,s2);
}/*
以字符串形式打印出最小的整数
*/
void PrintMinNum(int *nums,int len)
{if(nums==NULL || len<1)return;int i;//将整数写入到字符串中for(i=0;i<len;i++)sprintf(strs[i],"%d",nums[i]);//依照mycompare中指定的规则排序qsort(strs,len,10*sizeof(char),mycompare);for(i=0;i<len;i++)printf("%s",strs[i]);printf("\n");
}int main()
{int nums[100];int m;while(scanf("%d",&m) != EOF){int i;for(i=0;i<m;i++)   scanf("%d",nums+i);PrintMinNum(nums,m);}return 0;
}
/**************************************************************
    Problem: 1504
    User: mmc_maodun
    Language: C++
    Result: Accepted
    Time:240 ms
    Memory:1020 kb
****************************************************************/

【剑指offer】设置在最小数目的阵列相关推荐

  1. 设置在最小数目的阵列

    称号:输入一个正整数数组,所有的数字拼接在一起阵列形成了几个,打印出所有的数字可以拼接在最低限度,例如,输入数组.{32,321},则打印出这个3个数字能排成的最小数字32132. 通过比較组合的字符 ...

  2. 《剑指offer》刷题总结

    从三月初开始刷剑指offer上面的题,到现在花了近二十天的时间终于刷完了.应该说,掌握上面的技巧应付一些公司面试题和小公司的笔试题是完全没有问题的.之前参加一个公司笔试,算法题就有一题是剑指offer ...

  3. 剑指offer——面试题33:把数组排成最小数

    剑指offer–面试题33:把数组排成最小数 Solution1: 20180904复习.重点记忆比较技巧!!! 代码参考网址:https://www.nowcoder.com/profile/416 ...

  4. 剑指offer思路总结

    统一格式前注: 标题对应<剑指offer>题号 时间复杂度 空间复杂度 思路:包括解题思路和编程中的技巧 教训:编程过程中需要注意的地方以及存在的惯性错误 1.赋值运算符函数(略) 2.实 ...

  5. 剑指offer 旋转数组的最小数字

    把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组 ...

  6. python连续质数计算_GitHub - xxqfft/AlgorithmsByPython: 算法/数据结构/Python/剑指offer/机器学习/leetcode...

    尝试用Python实现一些简单的算法和数据结构 之前的算法和数据结构基本都是用Swift写的,现在尝试用Python实现一些简单的算法和数据结构. update 20160704 准备加入<剑指 ...

  7. java剑指offer_剑指offer题目java实现

    Problem2:实现Singleton模式 题目描述:设计一个类,我们只能生成该类的一个实例 1 packageProblem2;2 3 public classSingletonClass {4 ...

  8. 剑指offer算法题分析与整理(二)

    下面整理一下我在刷剑指offer时,自己做的和网上大神做的各种思路与答案,自己的代码是思路一,保证可以通过,网友的代码提供出处链接. 目录 1.序列化二叉树 2.带记忆的DFS搜索 3.坐标数位和不大 ...

  9. 剑指offer刷题总记——Java

    剑指offer JZ1 二维数组中的查找 JZ2 替换空格 JZ3 从尾到头打印链表 JZ4 重建二叉树 JZ5 用两个栈实现队列 JZ6 旋转数组的最小数字 JZ7 斐波那契数列 JZ8 跳台阶 J ...

最新文章

  1. 算法设计与分析第4章 动态规划(一)【背包问题】
  2. 获取服务器路径的方式 【记录】
  3. 哪些听起来像段子一样的故事?
  4. 【PHPWord】TitleTOC
  5. android 回收站设计,android-如何根据屏幕尺寸设置回收站视图项目的宽度尺寸?...
  6. javac环境变量配置(转)
  7. 《企业软件交付:敏捷与高效管理精要》——3.8 结论
  8. cass有坐标文件生成里程文件_怎样用CASS生成里程文件,带桩号的
  9. 安装rabbitMQ delayed-messaged
  10. Pixhawk原生固件PX4之顶层软件结构
  11. 【最详细的分析】1061 Dating (20 分)
  12. clion 查看内容窗口_苹果电脑(macOS)查看 WiFi 密码的两种方法
  13. Storm ack和fail机制再论
  14. 【Qt串口调试助手】1.1 - Qt5编写串口调试助手,Qt串口编程
  15. CentOS 7下载安装MySQL 5.7以及连接虚拟机CentOS 7数据库教程
  16. 梅耶尔何时离开雅虎?答案将很快揭晓
  17. 【Windows Mobile】Win10 停留在加载界面无法进入主界面
  18. 帝国PHP二次开发,帝国CMS二次开发有哪些注意事项
  19. win7定时关机命令_如何让win7操作系统实现定时关机,以防我们忘记电脑关机
  20. 人事部门用计算机管理人事档案,计算机在人事管理中的运用分析

热门文章

  1. deepin配置反向代理映射本地到公网
  2. [HNOI2011]数学作业 分段矩阵乘法
  3. CM5.11与CDH5.11安装使用说明
  4. Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.
  5. jQuery 序列化表单数据 serialize() serializeArray()
  6. 对 2018 年 AI 发展预言全中,他们又立了 2019 的 Flag
  7. Asp.Net 构架(Http Handler 介绍) - Part.2
  8. maven超级pom内容
  9. MongoDB ( 五 )高级_索引
  10. 【小知识点】解决Chrome动画”卡顿”的办法