当前位置:   article > 正文

一千题,No.0037(组个最小数)

一千题,No.0037(组个最小数)

给定数字 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++代码如下:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5. int arr[10] = {};
  6. multiset<int> s;
  7. int num;
  8. for(int i = 0;i < 10;++i)
  9. {
  10. cin >> arr[i];
  11. }
  12. for(int i = 0;i < 10;++i)
  13. {
  14. while(arr[i]--)
  15. {
  16. s.insert(i);
  17. }
  18. }
  19. auto t = s.begin();
  20. while(*t == 0)
  21. {
  22. ++t;
  23. }
  24. if(t == s.end())
  25. {
  26. cout << 0;
  27. }
  28. else
  29. {
  30. cout << *t;
  31. }
  32. s.erase(t);
  33. for(auto &elem : s)
  34. {
  35. cout << elem;
  36. }
  37. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/652140
推荐阅读
相关标签
  

闽ICP备14008679号