PAT Basic 1023 组个最⼩数 (20) [贪⼼算法]
题目
给定数字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
解题思路
- 贪心思想:依次取当前最小的数字作为高位
- 输入时用变量k,记录最小非0数字作为首位
- 打印首位数字k,并ts[k]--(k次数--)
- 遍历数组,依次取当前最小数字作为高位
注意点
因为题目已知最少有一个非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) [贪⼼算法]的更多相关文章
- PAT Basic 1023 组个最小数 (20 分)
给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...
- PAT乙级 1023. 组个最小数 (20)
1023. 组个最小数 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 给定数字0-9各若干个.你可以以 ...
- PAT Basic 1023
1023 组个最小数 给定数字0-9各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意0不能做首位).例如:给定两个0,两个1,三个5,一个8,我们得到的最小 ...
- 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 ...
- PAT (Basic Level) Practice 1023 组个最小数 分数 20
给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的最小的数就 ...
- PAT 乙级 1023.组个最小数 C++/Java
题目来源 给定数字 0-9 各若干个.你可以以任意顺序排列这些数字,但必须全部使用.目标是使得最后得到的数尽可能小(注意 0 不能做首位).例如:给定两个 0,两个 1,三个 5,一个 8,我们得到的 ...
- PAT Basic 1049 数列的片段和 (20 分)
给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段.例如,给定数列 { 0.1, 0.2, 0.3, 0.4 },我们有 (0.1) (0.1, 0.2) (0.1, 0.2, 0.3) ...
- PAT Basic 1003 我要通过! (20 分)
“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: ...
- 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, ...
随机推荐
- 九、SAP中使用定义时间及使用sy-uzeit取当前时间
一.sy-uzeit为取当前时间函数,类型t为时间类型,代码如下: 二.输出结果如下:
- VMware虚拟机黑屏
引用自:VMware吧 近期很多朋友遇到了VMware Workstation 14开启或新建虚拟机后黑屏的现象,无法关机,软件也无法关闭 用任务管理器结束VMware后这个VMX进程也关不了 解决办 ...
- com.alibaba.druid.pool.DruidDataSource
https://www.cnblogs.com/wuyun-blog/p/5679073.html DRUID介绍 DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0.DBCP.PR ...
- Linux每日一练20200219
- c++ opencv 动态内存
1.CvMemStorage定义动态内存存储器 内存存储器是一个用来存储诸如序列.轮廓.图形和子划分等动态增长数据结构的底层结构 2.示例 CvMemStorage *mems = cvCreat ...
- 【golang】golang文本处理
golang文本字符串操作:包含 合并 连接 分割 取索引 前缀后缀检测 消除字符串 消除空格 golang字符串操作需要用到 strings这个包 str := "hello world& ...
- 如何创建NPM包并上传
1 在NPM网站上注册,并验证(verify)自己的邮箱 https://www.npmjs.com 2 用命令行定位到你的库文件夹 3 在命令行里登录npm, 按提示依次输入用户名 密码 注册邮箱 ...
- 服务器搭建---Linux安装Node.js
先去官网下载:https://nodejs.org/en/download/ 把压缩包上传到服务器的/usr/local/soft(博主习惯)文件夹下 解压文件: cd /usr/local/sof ...
- 建立更可靠的OOP程序-类和成员的访问控制
1. public 成员(公共成员) (1)使用this 关键字的类的成员允许在任何地方被访问. (2)使用 prototype 定义的属性和方法都是公共成员. 这些属性和方法可以在外面任何地方被访问 ...
- Maven:A cycle was detected in the build path of project 'xxx'. The cycle consists of projects {xx}
以下这个错误是在Eclipse中导入多个相互依赖的工程时出现的“循环依赖问题”:A cycle was detected in the build path of project 'xxx'. The ...