美文网首页
PAT-B 1023. 组个最小数 (20)

PAT-B 1023. 组个最小数 (20)

作者: Rush的博客 | 来源:发表于2016-09-26 09:18 被阅读821次

    传送门

    https://www.patest.cn/contests/pat-b-practise/1023

    题目

    给定数字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

    分析

    1.先把每个数字的个数存到对应索引的数组里,然后输出是先输出第一个数,条件是,非0且最小的数;
    2.然后就按照数字从小到大依次输出就可以了。

    一次过的,倒是没发现什么坑。

    源代码

    //C/C++实现
    #include <iostream>
    
    using namespace std;
    
    int main(){
        int n[10], sum = 0;
        for(int i = 0; i < 10; ++i){
            scanf("%d", &n[i]);
            sum += n[i];
        }
        for(int k = 1; k < 10; ++k){
            if(n[k] > 0){
                printf("%d", k);
                n[k]--;
                break;
            }
        }
        for(int l = 0; l < 10; ++l){
            for(int m = 0; m < n[l]; ++m){
                printf("%d", l);
            }
        }
        printf("%c", '\n');
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:PAT-B 1023. 组个最小数 (20)

          本文链接:https://www.haomeiwen.com/subject/sjqqyttx.html