zoukankan      html  css  js  c++  java
  • PAT (Basic Level) Practise (中文) 1023. 组个最小数 (20)

    1023. 组个最小数 (20)

    时间限制
    100 ms
    内存限制
    65536 kB
    代码长度限制
    8000 B
    判题程序
    Standard
    作者
    CAO, Peng

    给定数字0-9各若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能做首位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是10015558。

    现给定数字,请编写程序输出能够组成的最小的数。

    输入格式:

    每个输入包含1个测试用例。每个测试用例在一行中给出10个非负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间用一个空格分隔。10个数字的总个数不超过50,且至少拥有1个非0的数字。

    输出格式:

    在一行中输出能够组成的最小的数。

    输入样例:
    2 2 0 0 0 3 0 0 1 0
    
    输出样例:
    10015558
     
    
    解题思路:
    
    ·利用数组a[0],..a[9]储存0...9数字出现的次数
    ·首先组成的数字首位不能为零,同时要求数字最小,即输出最小的非零数,同时将该数的次数减一
    ·输出所有的“0”。
    ·从1开始从小到大按其次数输出所有数字
    #include <iostream>
    using namespace std;
    
    int main()
    {
    	int a[10], i, j;
    	for ( i=0; i<10; i++ )
    		cin >> a[i];//a[i]记录0至9出现的次数 
    	for ( i=1; i<10; i++ )//输出最小的非零数 
    		if ( a[i] )
    		{
    			cout << i;//输出后次数减一并终止循环 
    			a[i]--;
    			break;
    		}
    	for ( i=0; i<a[0]; i++ )
    		cout << "0";//输出所有零 
    	for ( i=1; i<10; i++ )
    		for ( j=0; j<a[i]; j++ )
    			cout << i;//从小到大按其次数输出所有 
    	cout << endl;
    	return 0;
    }



  • 相关阅读:
    基于element-ui图片封装组件
    计算时间间隔具体每一天
    C语言学习笔记 —— 函数作为参数
    AtCoder Beginner Contest 049 题解
    AtCoder Beginner Contest 048 题解
    AtCoder Beginner Contest 047 题解
    AtCoder Beginner Contest 046 题解
    AtCoder Beginner Contest 045 题解
    AtCoder Beginner Contest 044 题解
    AtCoder Beginner Contest 043 题解
  • 原文地址:https://www.cnblogs.com/fayne/p/7224814.html
Copyright © 2011-2022 走看看