zoukankan      html  css  js  c++  java
  • 每天一道算法题(40)——组成的最小数字

    题目:

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

    代码:

    # include <iostream>
    #include"string"
    using namespace std;
    int main()
    {
    	static int counter[10];//设置计数器
    	int i;
    
    	for(i=0;i<10;i++)
    		cin>>counter[i];
    
    	//考虑存在‘0’的情况
    	i=1;
    	string s;
    	if(counter[0]){
    		while(counter[i]==0&&i<10)
    			i++;
    		if(i==10){//只有‘0’的情况
    			s+='0';
    			return 0;
    		}
    		else{
    			counter[i]--;
    			s+=(char)(i+'0');
    		}
    	}
    
    	//双重遍历输出
    	for(i=0;i<10;i++)
    		for(int j=counter[i];j>0;j--)
    				s+=(char)(i+'0');
    
    	cout<<s<<endl;
        return 0;
    }
    


  • 相关阅读:
    bzoj3302
    bzoj1264
    听风
    bzoj5073
    bzoj2144
    bzoj1263
    bzoj3653
    Docker 入门 2 镜像基本操作
    Docker 入门 1 准备 Docker 环境
    Docker Hub 镜像加速
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5392959.html
Copyright © 2011-2022 走看看