码迷,mamicode.com
首页 > 编程语言 > 详细

最小数排序

时间:2018-12-10 18:23:34      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:ios   不能   输出   har   int   std   输入   排列   getc   

题目:

给定数字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()) != ‘\n‘)
    {
        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;
}

最小数排序

标签:ios   不能   输出   har   int   std   输入   排列   getc   

原文地址:https://www.cnblogs.com/JingWenxing/p/9938021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!