【剑指offer】设置在最小数目的阵列
转载请注明出处: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】设置在最小数目的阵列的更多相关文章
- 剑指offer习题集2
1.把数组排成最小的数 class Solution { public: static bool compare(const string& s1, const string& s2) ...
- 《剑指offer》全部题目-含Java实现
1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. publi ...
- 剑指offer题目java实现
Problem2:实现Singleton模式 题目描述:设计一个类,我们只能生成该类的一个实例 package Problem2; public class SingletonClass { /* * ...
- 《剑指offer》内容总结
(1)剑指Offer——Trie树(字典树) Trie树 Trie树,即字典树,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种.典型应用是统计和排序大量的字符串(但不仅限于字符串),所以经常 ...
- 剑指offer第二章
剑指offer第二章 1.二维数组中的查找 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含 ...
- 剑指offer题解(Java版)
剑指offer题解(Java版) 从尾到头打印链表 题目描述 输入一个链表,按从尾到头的顺序返回一个ArrayList. 方法1:用一个栈保存从头到尾访问链表的每个结点的值,然后按出栈顺序将各个值存入 ...
- 《剑指offer》面试题11: 数值的整数次方
面试题11: 数值的整数次方 剑指offer面试题11,题目如下 实现函数double power(double base,int exponent),求base的exponent次方, 不得使用库 ...
- 剑指offer习题集1
1.打印二叉树 程序很简单,但是其中犯了一个小错误,死活找不到,写代码要注意啊 这里左右子树,要注意是node->left,结果写成root->left vector<int> ...
- 剑指Offer:面试题15——链表中倒数第k个结点(java实现)
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ...
随机推荐
- Hibernate(五)——经典解析一对一关联映射
前面两篇介绍了多对一.一对多的映射.今天分享下一对一的关联映射关系.有两种策略可以实现一对一的关联映射:主键关联.唯一外键关联. 主键关联——两个表有完全相同的主键值,来表示它们的一对一的关系.数据库 ...
- QT操作Excel(通过QAxObject使用了OLE,前提是本地安装了Excel)
新建QT GUI项目,在选择选项中勾选ActiveQT Container. #include <qaxobject.h> QAxObject *obj = new QAxObject(& ...
- Windows调试工具入门—1
NetRoc http://www.DbgTech.net 引子 Debugging Tools for Windows是微软发布的一套用于软件调试的工具包(后面如果没有指明,那么我会使用WinDbg ...
- VMware Workstation(虚拟机软件) V10.0 简体中文版可以安装了
在虚拟机软件中VMware Workstation算是一款非常强大较稳定的软件了,今天 VMware Workstation 10.0正式发布了,最让人欣喜的是该版本终于有了简体中 文版了,从现在开始 ...
- unable to load default svn client 和 Eclipse SVN 插件与TortoiseSVN对应关系
(一)unable to load default svn client 在Win7下的Eclipse,安装了subclipse 1.10.x,已经选中了subclipse和subversion Cl ...
- 斯坦福ML公开课笔记15—隐含语义索引、神秘值分解、独立成分分析
斯坦福ML公开课笔记15 我们在上一篇笔记中讲到了PCA(主成分分析). PCA是一种直接的降维方法.通过求解特征值与特征向量,并选取特征值较大的一些特征向量来达到降维的效果. 本文继续PCA的话题, ...
- Android在ListView显示图片(重复混乱闪烁问题)
Android在ListView显示图片(重复混乱闪烁问题) 1.原因分析 ListView item缓存机制: 为了使得性能更优,ListView会缓存行item(某行相应的View). ListV ...
- python+ueditor+七牛云存储整合
开发环境:python pyramid. 參考网址:http://developer.qiniu.com/docs/v6/sdk/python-sdk.html,http://my.oschina.n ...
- python 入门学习---模块导入三种方式及中文凝视
Python 有三种模块导入函数 1. 使用import 导入模块 import modname : 模块是指一个能够交互使用,或者从还有一Python 程序訪问的代码段.仅仅要导入了一个模块,就能够 ...
- 俄罗斯方块游戏JavaScript代码
JavaScript代码俄罗斯方块游戏 早就听说网上有人仅仅用60行JavaScript代码写出了一个俄罗斯方块游戏,最近看了看,今天在这篇文章里面我把我做的分析整理一下(主要是以注释的形式). 我用 ...