分享

PTA 1023 组个最小数 (20 分) C#

 悟道习术 2021-04-03

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

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

输入格式:

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

输出格式:

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

输入样例:

2 2 0 0 0 3 0 0 1 0

输出样例:

10015558

C#源码

using System;

using System.Collections.Generic;

namespace _1023

{

    class Program

    {

        static void Main(string[] args)

        {

            string strIn = Console.ReadLine();

            String[] strArr = strIn.Split(' ');

            string strOut = string.Empty;

            bool bFirst = false;

            int i = 0;

            foreach (var item in strArr)

            {

                if (i > 0 && bFirst == false && int.Parse(item) > 0)

                {

                    for (int j = 0; j < int.Parse(item); j++)

                    {

                        if (bFirst == false)

                        {

                            strOut = i + strOut;

                            bFirst = true;

                        }

                        else

                        {

                            strOut += i;

                        }

                    }

                }

                else

                {

                    for (int j = 0; j < int.Parse(item); j++)

                    {

                        strOut += i;

                    }

                }

                i++;

            }

            Console.WriteLine(strOut);

        }

    }

}

分析:

  1. 注意读懂题意,题中输入10个数字,代表的录入数字的量,录入的数字是0~9(从小到大顺序);样例中给出的2 2 0 0 0 3 0 0 1 0也就是说,给了2个0,2个1,3个5,1个8,其他数字个数都为0个,然后用这些数字按从小到大排列组成一个最小的数字。

  2. 就是注意一下0不能作为组成数字的最高位使用。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多