1023-组个最小数
leenickzh Lv4

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

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

输入格式

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

输出格式

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

输入样例

1
2 2 0 0 0 3 0 0 1 0

输出样例

1
10015558

分析

接收所有数字的时候用变量zc记录0的个数,然后用从小到大排序,首先输出数字列表中第zc位置的数字(不是0的第一个最小数),然后遍历输出剩下的数字列表,碰到第zc个数字跳过(一开始已经输出过了),就能得到输出结果.

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
vector<int> nums;
int zc = 0;
int n;
for (int i = 0; i < 10; i++)
{
cin >> n;
if (i == 0)
{
zc = n;
}
for (int j = 0; j < n; j++)
{
nums.push_back(i);
}
}
sort(nums.begin(), nums.end());
cout << nums[zc];
for (int i = 0; i < nums.size(); i++)
{
if (i == zc)
{
continue;
}
cout << nums[i];
}
return 0;
}
  • Post title:1023-组个最小数
  • Post author:leenickzh
  • Create time:2021-06-01 20:02:45
  • Post link:https://nickk.cn/2021/06/01/1023-组个最小数/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.
 Comments