zoukankan      html  css  js  c++  java
  • 1023 组个最小数 (20 分)

    给定数字 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 #include<iostream>
     2 #include<cstdio>
     3 using namespace std;
     4 int main()
     5 {
     6     int a[10],b[100],sum=0;
     7     for(int i=0;i<10;i++)
     8     {
     9         cin>>a[i];
    10         sum+=a[i];
    11         getchar();
    12     }
    13         for(int i=1;i<10;i++)
    14         {
    15             if(a[i]!=0)
    16             {
    17                 b[0]=i;
    18                 a[i]--;
    19                 break;
    20             }
    21         }
    22 
    23     int sum2=sum;
    24     int k=0;
    25     int s=1;
    26 
    27     while(sum!=1)
    28         {
    29             if(a[k]!=0)
    30             {
    31                 b[s]=k;
    32                 a[k]--;
    33                 sum--;
    34                 s++;
    35             }
    36             else
    37                 k++;
    38         }
    39    // cout<<s<<endl;
    40     for(int i=0;i<sum2;i++)
    41         cout<<b[i];
    42 }
  • 相关阅读:
    [BZOJ 4001] [TJOI 2015] 概率论
    【计算几何】推导坐标的旋转公式
    【动态规划学习】01背包
    (坑)网络流24题
    bzoj2442(单调队列优化)
    [lydsy2005]能量采集
    主席树
    [noi2005][treap]序列维护
    [Apio2012][Treap]派遣
    [CodeVs][1514][Treap][书架]
  • 原文地址:https://www.cnblogs.com/ygjojo/p/10759009.html
Copyright © 2011-2022 走看看