zoukankan      html  css  js  c++  java
  • 【剑指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
    ****************************************************************/

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    EOF:getchar()函数返回的一个特殊值
    elementUI的el-select使用filterable无效
    element table单元格相关的样式
    关于前端权限的一点想法--续
    IE浏览器与PDF文件
    vue form表单数据无法修改
    computed数据变动,table加载不全
    vue插件开发(本地使用)
    element table
    对象删除(消耗时间验证)
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4813979.html
Copyright © 2011-2022 走看看