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

思路1:

用一个数组保存10个非负整数的个数,根据各个非负整数出现的次数,把他们转化成字符,push进一个字符串的尾部

假设有字符串s,给出2个0,就将2个0转化成字符,添加到s的尾部, s.push_back(+) 执行2次

字符 c = '1', 将char转成int:int a = c - 48

整型 a = 1,将int转成char: char c = a + 48

最后遍历字符串,如果第一位是0,就将第一位非0字符与第一位进行交换

思路2:

用一个数组保存10个非负整数的个数

从1-9中选一个最小的数输出1次,其个数-1

然后从0开始依次输出数组

C++实现

思路1

 #include <iostream>
#include <algorithm>
#include <string>
using namespace std; int main()
{
const int N = ;
int arr[N];
string s;
for (int i = ; i < N; ++i)
{
cin >> arr[i];
for (int j = ; j < arr[i]; ++j)
{
s.push_back((i + ));
} }
sort(s.begin(), s.end());
if (s.at() == '')
{
for (int i = ; i < s.size(); ++i)
{
if (s[i] != '')
{
char temp = s[i];
s[i] = s[];
s[] = temp;
break;
}
}
}
cout << s;
return ;
}

思路2

 #include <iostream>
using namespace std; int main()
{
const int N = ;
int arr[];
for (int i = ; i < N; ++i)
{
cin >> arr[i];
} for (int i = ; i < N; ++i)
{
if (arr[i] != )
{
cout << i;
arr[i]--;
break;
}
} for (int i = ; i < N; ++i)
{
for (int j = ; j < arr[i]; ++j)
{
cout << i;
}
}
return ;
}

最新文章

  1. easy ui 1.4的NumberBox,失去焦点后不能再次输入小数点
  2. Net-Speeder为OpenVZ加速
  3. IIS SMTP Queue stuck
  4. HDU 3308 LCIS (线段树区间合并)
  5. 【JS】Intermediate3:AJAX
  6. PowerShell优化和性能测试
  7. PHP 的try catch 报错捕获机制
  8. dos判断系统版本
  9. [Unity3D]Unity3D游戏开发之刀光剑影特效的实现
  10. MacOSX 中如何动态隐藏Dock Icon
  11. 【Android Developers Training】 46. 处理音频外放设备
  12. linux系统莫名被黑的诡异经历
  13. 非常棒的教程记录(JVM)
  14. VUE的一个数据绑定与页面刷新相关的bug
  15. jvm虚拟机--垃圾回收子系统
  16. Android编译环境——ubuntu12.04上android2.3.4编译错误以及解决
  17. eclipse 和 javaClass
  18. 170529、springMVC 的工作原理和机制
  19. 475. Heaters
  20. STM32F103C8T6、STM32F103ZET6工程模板

热门文章

  1. 2018-2019-2 网络对抗技术 20165230 Exp8 Web基础
  2. 怎么删除iOS模拟器上的应用程序?
  3. 【原创】在windows下使用xampp搭建phpcms v9
  4. rpm续
  5. .NetCore快速搭建ELK分布式日志中心
  6. hread.interrupt()到底意味着什么
  7. sql优化(原理,方法,特点,实例)
  8. Zookeeper的介绍与基本部署
  9. SpringBoot入门初体验
  10. Linux学习笔记之秋水BBR一键部署