• 【剑指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("
    ");
    }
    
    
    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
    ****************************************************************/

  • 相关阅读:
    蓝屏的钙,好喝的钙
    正则
    JavaScript 获取当前时间戳 (3种方式)
    react-native upoad imagepicker
    xmlhttprequest请求
    修改配置使fiddler可以查看https请求
    安装composer
    判定 android IOS
    看端口任务
    squid 缓存Internet 软件
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/7098221.html
Copyright © 2020-2023  润新知