题目

给定数字0-9各若⼲个。你可以以任意顺序排列这些数字,但必须全部使⽤。⽬标是使得最后得到的数尽可能⼩(注意0不能做⾸位)。例如:给定两个0,两个1,三个5,⼀个8,我们得到的最⼩的数就是10015558。现给定数字,请编写程序输出能够组成的最⼩的数。

输⼊格式:

每个输⼊包含1个测试⽤例。每个测试⽤例在⼀⾏中给出10个⾮负整数,顺序表示我们拥有数字0、数字1、……数字9的个数。整数间⽤⼀个空格分隔。10个数字的总个数不超过50,且⾄少拥有1个⾮0的数字。

输出格式:

在⼀⾏中输出能够组成的最⼩的数。

输⼊样例:

2 2 0 0 0 3 0 0 1 0

输出样例:

10015558

题目分析

已知0-9数字的个数,至少有一个非0数,求最小组合数,首位不可以是0

解题思路

  1. 贪心思想:依次取当前最小的数字作为高位
  2. 输入时用变量k,记录最小非0数字作为首位
  3. 打印首位数字k,并ts[k]--(k次数--)
  4. 遍历数组,依次取当前最小数字作为高位

注意点

因为题目已知最少有一个非0数,所以全0的情况不需要特殊考虑

Code

Code 01

#include <iostream>
#include <algorithm>
using namespace std;
int main(int argc, char * argv[]) {
int k=0,ts[10]= {0};
for(int i=0; i<10; i++) {
scanf("%d",&ts[i]);
if(ts[i]>0&&i!=0&&k==0)k=i;
}
printf("%d",k);
ts[k]--;
for(int i=0; i<10; i++) {
for(int j=0; j<ts[i]; j++)printf("%d",i);
}
return 0;
}

PAT Basic 1023 组个最⼩数 (20) [贪⼼算法]的更多相关文章

  1. PAT Basic 1023 组个最小数 (20 分)

    给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...

  2. PAT乙级 1023. 组个最小数 (20)

    1023. 组个最小数 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定数字0-9各若干个.你可以以 ...

  3. PAT Basic 1023

    1023 组个最小数 给定数字0-9各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意0不能做首位).例如:给定两个0,两个1,三个5,一个8,我们得到的最小 ...

  4. PAT 甲级 1023 Have Fun with Numbers (20 分)(permutation是全排列题目没读懂)

    1023 Have Fun with Numbers (20 分)   Notice that the number 123456789 is a 9-digit number consisting ...

  5. PAT (Basic Level) Practice 1023 组个最小数 分数 20

    给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...

  6. PAT 乙级 1023.组个最小数 C++/Java

    题目来源 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...

  7. PAT Basic 1049 数列的片段和 (20 分)

    给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) ...

  8. PAT Basic 1003 我要通过! (20 分)

    “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: ...

  9. PAT Advanced 1023 Have Fun with Numbers (20) [⼤整数运算]

    题目 Notice that the number 123456789 is a 9-digit number consisting exactly the numbers from 1 to 9, ...

随机推荐

  1. Spark 2.x Troubleshooting Guide

    IBM在spark summit上分享的内容,包括编译spark源码,运行spark时候常见问题(缺包.OOM.GC问题.hdfs数据分布不均匀等),spark任务堆/thread dump 目录 编 ...

  2. 留学Essay写作中常见的两类要求词盘点

    写essay的时候,我们会常常因为各式各样的要求词而头疼:discuss,describing,evaluate,explain,等等,他们之间有何区别?如果你在思考这个问题,那么这篇文章就是为你写的 ...

  3. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 字体图标(Glyphicons):glyphicon glyphicon-lock

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  4. vue学习(一)ES6常用语法

    1 ES6常用语法 1.1 变量提升 例① # 变量提升 <div id="app"> </div> <script> console.log( ...

  5. c++程序—布尔值

    #include<iostream> using namespace std; #include<string> int main() { //创建bool数据类型 bool ...

  6. CodeForces - 710E Generate a String (dp)

    题意:构造一个由a组成的串,如果插入或删除一个a,花费时间x,如果使当前串长度加倍,花费时间y,问要构造一个长度为n的串,最少花费多长时间. 分析:dp[i]---构造长度为i的串需要花费的最短时间. ...

  7. 解决RecyclerView瀑布流效果结合Glide使用时图片变形的问题

    问题描述:使用Glide加载RecyclerView的Item中的图片,RecyclerView使用了瀑布流展示图片,但是滚动时图片会不断的加载,并且大小位置都会改变,造成显示错乱. 解决方法:使用瀑 ...

  8. POJ 3663:Costume Party

    Costume Party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12607   Accepted: 4977 De ...

  9. 微信小程序手绘地图实现之《Canvas》

    环境:微信SDK2.9+   + uniapp (可切换直接使用.map.js不限制环境) 正题: 先创建一个地图组件 <template> <view class="cu ...

  10. x++ 与 ++x的区别

    相信在很多编程语言中都会遇见这个问题,这对于刚入编程的人来说可能是相当懵逼了. 老师的官方说法是:操作符在前面先进行自身运算,再进行其他运算:操作符在后面,先进行其他运算再进行自身运算. 反正我这段话 ...