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

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

相关推荐