最小数排序

题目:

给定数字0~9若干个。你可以以任意顺序排列这些数字,但必须全部使用。目标是使得最后得到的数尽可能小(注意0不能为首
位)。例如:给定两个0,两个1,三个5,一个8,我们得到的最小的数就是:10015558.
现给定数字,请编写程序输出能够组成的最小的数。

输入样例1:

0 0 5 8 5 1 5 1

输出样例1:

10015558

输入样例2:

5 6 4 2 3 6 5 0 0 0 6

输出样例2:

20003455666

代码示例:

#include <iostream>

using namespace std;

int main()
{
	int baseNum[10] = { 0 };
	char theGet;
	int count = 0;

	while ((theGet = getchar()) != '
')
	{
		baseNum[theGet-'0']++;
		count++;
	}

	int n;
	for (n = 1; n < 10; n++)			// 首位判断
	{
		if (baseNum[n] == 0)
			continue;
		else
		{
			cout << n;
			baseNum[n]--;
			break;
		}
	}

	for (n = 0; n < 10; n++)			// 其他位判断
	{
		if (baseNum[n] == 0)
			continue;
		else
		{
			cout << n;
			baseNum[n]--;
			if (baseNum[n] != 0)
				n--;
		}
	}

	return 0;
}
原文地址:https://www.cnblogs.com/JingWenxing/p/9938021.html