【剑指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
****************************************************************/

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 微信小程序图片预览功能_匿名聊天室小程序

    微信小程序图片预览功能_匿名聊天室小程序第一次写小程序,老板就让我用websoket写个聊天对话,群聊这种。第一次写聊天功能,第一次用websoket,第一次用小程序,这是在考验我吗?不过我还是研究了一下,终于实现了。首先看一下界面,界面很简单,就是首页刚进来获取了用户信息头像,昵称等。点击进入聊天室就可以聊天了,下面我介绍的是前端代码实现,后台需要做的很简单,就是你给他发送什么数据,他就给你返回什么数据,就是在接收前台发送过来的图…

  • Java转换流_java中的字符使用什么编码

    Java转换流_java中的字符使用什么编码编码转换流字节流:针对二进制文件字符流:针对文本文件,读写容易出现乱码的现象,在读写时,最好指定编码集为UTF-81概述编码转换流(InputStreamReader/OutputStreamWriter)主要进行编码的转换,用来解决字符流读写乱码的问题2工具API学习OutputStreamWriter:OutputStreamWriter(OutputStreamout)把传入的字节流转成字符流OutputStreamWriter(OutputStreamout,Strin

  • No tests found matching 错误该怎么解决「建议收藏」

    No tests found matching 错误该怎么解决「建议收藏」解决办法:在自己的测试类的测试方法上加上@Test

  • 分节符后页眉如何更改与上一节相同_页眉和页脚是什么

    分节符后页眉如何更改与上一节相同_页眉和页脚是什么不常编辑对文档有格式要求的朋友来说,偶尔需要编辑指定格式页眉页码的word文档时,会一时不记得如何使用,在网上搜索半天,异常烦躁。特整理一下,记录下来,备不时只需。以下操作环境为word2016。

  • CultureInfo名字

    CultureInfo名字 
    ThefollowingpredefinedCultureInfonamesandidentifiersareacceptedandusedbythisclassandotherclassesintheSystem.Globalizationnamespace.
     CultureNameCultureIdentifierLanguage-Country/Region””(emptystring)0x007Finvariantcultu

发表回复

您的电子邮箱地址不会被公开。

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