2013年6月九度Online Judge程序猿求职及面试月赛 - 题目3:把数组排成最小的数

本文主要是介绍2013年6月九度Online Judge程序猿求职及面试月赛 - 题目3:把数组排成最小的数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目3:把数组排成最小的数

时间限制:1 秒

内存限制:128 兆

特殊判题:

提交:145

解决:31

题目描述:

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

输入:

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

输出:

对应每个测试案例,
输出m个数字能排成的最小数字。

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

本题需要利用C++ STL中的sort方法,最容易想到的就是字典序,可是我们比较发现,如果只是按照字典序,排出来的结果并不对,例如:23和223,23的字典序比223小,可是23223比22323要大,这里定义一个比较函数,比较两个字符串str1和str2大小的时候,先将它们拼接,比较str1 + str2和str2 + str1,如果str1 + str2大于str2 + str1,则说明我们应该将str2放在前边,按照这个规则,对string类型的数组排序,则最后整体输出数组,就是我们想要的结果,如果想要将数组排成最大的数,只需改变这个比较函数就可以了。

/**作者:	齐士垚日期:	2013.6.23功能:	把数组排成最小的数语言:	C++ 结果:	Accepted题目:	1504 
*/
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
/**参数:	string str1, string str2功能:	根据两个字符串的拼接结果进行字典序比较返回值:bool 
*/
bool compare(string str1, string str2) { string fromstr1 = str1.append(str2);	//字符串str1后追加str2 string fromstr2 = str2.append(str1);	//字符串str2后追加str1 if(fromstr1.compare(fromstr2) < 0) {	//根据比较结果返回bool值 return true;}return false;
}int main() {int i,n,m;while(cin>>n) {			//直到待测案例结束 string temp[n];		//定义string数组,用于存储每个案例的输入数组 for(i = 0; i < n; i++) {cin>>temp[i];	//接收数据 }sort(temp,temp + n,compare);	//利用sort函数排序,带有compare条件,最后排序出来的结果 for(i = 0; i < n; i++) {		//输出排序结果 cout<<temp[i];}cout<<endl;}return 0;
}


暂时还没有想到好的C语言解决办法,如果您有好的解决方法,欢迎分享。

这篇关于2013年6月九度Online Judge程序猿求职及面试月赛 - 题目3:把数组排成最小的数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944582

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

Java中数组与栈和堆之间的关系说明

《Java中数组与栈和堆之间的关系说明》文章讲解了Java数组的初始化方式、内存存储机制、引用传递特性及遍历、排序、拷贝技巧,强调引用数据类型方法调用时形参可能修改实参,但需注意引用指向单一对象的特性... 目录Java中数组与栈和堆的关系遍历数组接下来是一些编程小技巧总结Java中数组与栈和堆的关系关于

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方