【剑指offer】设置在最小数目的阵列

【剑指offer】设置在最小数目的阵列

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

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

题目描写叙述:

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

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

输入:

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

输出:

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

例子输入:
323 13 6223456 56
例子输出:
132362345656

    这道题主要要自己定义一个比較组合后的数字的大小的规则,主要是对于数字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
****************************************************************/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117802.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • VMware下载安装教程_安装vmware虚拟机

    VMware下载安装教程_安装vmware虚拟机全网最详细的VMware虚拟机下载安装教程第一步下载虚拟机1.进入VMware官网,点击左侧导航栏中的下载,选择下拉列表中的产品下载,再点击图中标记的WorkstationPro,如下图所示。2.选择自己需要的版本和操作系统,在这里以Windows系统为例,点击转至下载,如下图所示。-3.点击转至下载后也在此处可以选择版本。选择好版本后点击立即下载。如下图所示。4.注意,需要登录之后才能下载。若无账号可点击注册后登录。如下图所示。二、安装虚拟机1.进入下载路径,双击.

    2025年11月5日
    3
  • Python:利用python代码编程实现将视频的avi格式转换为MP4格式

    Python:利用python代码编程实现将视频的avi格式转换为MP4格式​Python:利用python代码编程实现将视频的avi格式转换为MP4格式目录利用python代码编程实现将视频的avi格式转换为MP4格式T1、ffmpeg命令在dos内实现T2、python代码编程实现利用python代码编程实现将视频的avi格式转换为MP4格式T1、ffmpeg命令在dos内实现ffmpeg-y-iF:\File_Anaconda\project_py37\RealTimeImageAnimation\output\FamilyBa_HuGe.a

    2022年10月17日
    1
  • C语言中char、short、int、long各占多少字节

    C语言中char、short、int、long各占多少字节1byte=8bit一个字节占8个二进制位windows操作系统,32位机中,char:1个字节short:2个字节int:4个字节long:4个字节以下是windows操作系统,32位机下的代码测试结果(32位机中,指针占4个字节,如变量e):windows操作系统,64位机中,char:1个字节…

    2022年5月5日
    69
  • 几种java反编译软件的安装以及使用总结

    几种java反编译软件的安装以及使用总结公司要和别的公司合作,有些代码不希望让他们知道,最近老大们在弄代码混淆的事,而我就做起了测试代码混淆的工作。印象笔记更新之后不能用了,就整理在博客上吧。下面是在网上找的几种反编译软件的安装以及使用:一、JD-JUI官网下载链接:http://jd.benow.ca/下载之后解压,点击“jd-gui.exe”运行:直接将".jar"文件拖入进去即可查看里边的“.class”文件,如上图所示。二:Lu…

    2022年6月3日
    46
  • 良心推荐,我珍藏的一些Chrome插件[通俗易懂]

    良心推荐,我珍藏的一些Chrome插件[通俗易懂]上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的Chrome浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。我下面就把我日常工作和学习中经常用到的一些Chrome浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。MarkdownHereMarkdownHere可以让你更愉快的写邮件,由于支持Markdown直接转电子邮…

    2022年6月10日
    27
  • ARM指令中LDR与MOV的区别与应用——看这一篇就够了

    ARM指令中LDR与MOV的区别与应用——看这一篇就够了ARM指令中LDR与MOV的区别与应用、从内存中寻址的方法、LDR伪指令和MOV指令的异同

    2022年6月17日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号