L-2:插松枝(Python)

作者 陈越

单位 浙江大学

songzhi.jpg

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的:

  • 每人手边有一只小盒子,初始状态为空。
  • 每人面前有用不完的松枝干和一个推送器,每次推送一片随机型号的松针片。
  • 工人首先捡起一根空的松枝干,从小盒子里摸出最上面的一片松针 —— 如果小盒子是空的,就从推送器上取一片松针。将这片松针插到枝干的最下面。
  • 工人在插后面的松针时,需要保证,每一步插到一根非空松枝干上的松针片,不能比前一步插上的松针片大。如果小盒子中最上面的松针满足要求,就取之插好;否则去推送器上取一片。如果推送器上拿到的仍然不满足要求,就把拿到的这片堆放到小盒子里,继续去推送器上取下一片。注意这里假设小盒子里的松针片是按放入的顺序堆叠起来的,工人每次只能取出最上面(即最后放入)的一片。
  • 当下列三种情况之一发生时,工人会结束手里的松枝制作,开始做下一个:

(1)小盒子已经满了,但推送器上取到的松针仍然不满足要求。此时将手中的松枝放到成品篮里,推送器上取到的松针压回推送器,开始下一根松枝的制作。

(2)小盒子中最上面的松针不满足要求,但推送器上已经没有松针了。此时将手中的松枝放到成品篮里,开始下一根松枝的制作。

(3)手中的松枝干上已经插满了松针,将之放到成品篮里,开始下一根松枝的制作。

现在给定推送器上顺序传过来的 N 片松针的大小,以及小盒子和松枝的容量,请你编写程序自动列出每根成品松枝的信息。

输入格式:

输入在第一行中给出 3 个正整数:N(≤103),为推送器上松针片的数量;M(≤20)为小盒子能存放的松针片的最大数量;K(≤5)为一根松枝干上能插的松针片的最大数量。

随后一行给出 N 个不超过 100 的正整数,为推送器上顺序推出的松针片的大小。

输出格式:

每支松枝成品的信息占一行,顺序给出自底向上每片松针的大小。数字间以 1 个空格分隔,行首尾不得有多余空格。

输入样例:

8 3 4
20 25 15 18 20 18 8 5

输出样例:

20 15
20 18 18 8
25 5
n,m,k = map(int,input().split())
arr = list(map(int,input().split()))
temp = []
length = len(arr)
date = []
while len(arr) > 0:# 刚拿到树枝拿到直接插最下面flag = 0if len(temp) ==0 and len(date) ==0:date.append(arr[0])arr.pop(0)#  当盒子没有时,但是树枝已经插着了,只能去流水线拿:elif len(temp) == 0 and len(date) != 0:if date[-1] >= arr[0]:date.append(arr[0])#直接插树上else:temp.append(arr[0])#不能装,只能放盒子里arr.pop(0)#盒子里有,树上也插着有。此时就要一直去盒子拿直到盒子的不能用为止:elif len(temp) != 0 and len(date) !=0:while len(temp) > 0:if date[-1] >= temp[-1]:date.append(temp[-1])temp.pop(-1)if len(date) == k:flag = 1breakelse:break# 当盒子的不能拿之后,看看流水线的能不能拿,不能拿就要放盒子里:if flag == 0:if len(arr) > 0:if date[-1] >= arr[0]:date.append(arr[0])else:temp.append(arr[0])arr.pop(0)# 做第二单时,盒子有,但是树枝是空的,直接去盒子拿elif len(temp) != 0 and len(date) == 0:date.append(temp[-1])temp.pop(-1)while len(temp) > 0:if date[-1] >= temp[-1]:date.append(temp[-1])temp.pop(-1)if len(date) == k:flag = 1breakelse:breakif flag == 0:if len(arr) > 0:if date[-1] >= arr[0]:date.append(arr[0])else:temp.append(arr[0])arr.pop(0)if len(date) == k or flag == 1:print(*date,sep=' ')date = []continueif len(arr) > 0:if len(temp) == m and arr[0] > date[-1]:print(*date, sep=' ')date = []else:if len(temp) > 0:if temp[-1] > date[-1]:print(*date, sep=' ')date = []while len(temp) >0:date.append(temp[-1])temp.pop(-1)if len(temp) > 0:if date[-1] >temp[-1]:continueprint(*date, sep=' ')date = []else:print(*date,sep=' ')break

 思路:大概思路代码已经说明咯,这题也是花了好长时间哎,条件有点多,调试了好久,最终也是得到了22分,还一个格式错误嘿嘿,不想调了,代码思路供大家参考哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

命令行中当前目录下打开资源管理器窗口

有时候使用命令行时执行命令生成了一些文件,想在资源管理器窗口中打开,或者向当前位置放入文件,以供处理。往往需要打开当前目录的资源管理器窗口,通常就是文件资源管理器,或者我的电脑一层层找到当前目录,…

手机号验证码重新发送

前文叙述 很久以前做的一个 demo ,纯 HTML 、CSS、js 制作,一定时间段之后才可以重新发送验证码,如 60s 后再次发送验证码,在该时间段内发送验证码按钮为禁用状态,实战开发过程也亦是同理,因此记录一手。 一…

内存的基本特性

初识内存 1,内存的基本特性 现代计算机的基本组成 现代计算机之父--冯诺伊曼提出了计算机的基本组成: 运算器:负责算术运算和逻辑运算,目前已经集成到CPU中。 控制器:负责控制系统的各部件,使之协调的…

【笔记】Android ServiceStateTracker 网络状态变化逻辑及SPN更新影响

业务简介 在网络状态变化的时候(数据或WiFi),会更新SPN。 基于Android U的代码分析。 分类:SPN Data_Dic-的博客-CSDN博客 功能逻辑 状态说明 飞行模式下注册上WFC的话,注册状态MD上报 regState: NOT_REG_MT_NOT…

IO进线程练习(用到了:文件IO 标准IO 多进程 exec进程转移 有名管道 无名管道)

1 利用文件IO读取文件数据存入链表,当触法ctrlc时将链表数据存入文件。 main.c #include"head.h" FILE*fp_w; linklist L; void handler(int sig){out_file(fp_w,L);printf("文件写入完成\n");exit(0); }int main(int argc, const char *argv…

一文读懂MySQL7大日志(slow、redo、undo、bin、relay、general、error)

Slow Log 简介 用于记录执行时间超过指定值的 SQL 语句的详细信息,多用于调试和监控。 配置 因为开启会略微影响性能,所以默认没有开启,所以需要配置。 查看是否开启 show variables like %slow%; ------------------------------------…

计算机找不到api-ms-win-core-path-l1-1-0的5种解决方法

在计算机使用过程中,我们可能会遇到各种问题,其中之一就是找不到某些系统文件。最近,许多用户反映他们在使用电脑时遇到了“找不到api-ms-win-core-path-l1-1-0文件”的问题。这个问题通常出现在Windows操作系统中,可能会影响到一…

Java外观模式源码剖析及使用场景

外观模式 一、介绍二、家庭影院项目案例使用三、Java API或框架中应用分析三、Spring框架ApplicationContext源码 一、介绍 外观模式(Facade Pattern)是一种结构型设计模式,它为子系统中的一组接口提供了一个统一的高层接口,使得子系统更加容易使用。外观模式定义了一个高层接…

leetcode:二叉树的左右子树反转的递归和迭代的C++实现

问题描述 给定一个二叉树,将其每个节点的左右子树进行反转。 解决方案 以下是 C 代码实现: TreeNode* invertTree(TreeNode* root) {if (root nullptr) {return nullptr;}// 交换当前节点的左右子树TreeNode* temp root->left;root->left r…

C语言转义字符:一文打尽

转义字符 1. 前言2. 预备知识2.1 打印格式2.2 进制转换2.3 ASCII码 3. 什么是转义字符4. 常见的转义字符4.1 \?4.2 \4.3 \"4.4 \\4.5 \dddddd表示1到3个八进制数字4.6 \xdddd表示1到2个十六进制数字4.7 其他转义字符 5. 一道笔试题6. 一个小插曲 1. 前言 大家好&#xf…

DFS和BFS以及练习题目(未完待续)

DFS和BFS 温馨提示:学习dfs之前最好先了解一下递归的思想。 递归思想 斐波那契 题目分析 题目代码 import java.util.Scanner; public class Main{static long dp[]; public static void main(String[] args) {Scanner scanner new Scanner(System.in);int t…

吴恩达deeplearning.ai:倾斜数据集的误差指标精确率、召回率

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai专栏 文章目录 倾斜数据集的误差指标罕见病预测精确率和召回率 精确率和召回率的权衡精确率和召回率的矛盾关系 F1算法 倾斜数据集的误差指标 在神经网络中,如果你的数据集中正例和负…

CSS样式中长度单位含义解析:rpx、px、vw、vh、em、rem、pt

在 CSS 样式中,有几种常见的长度单位,包括 rpx 、 px 、 vw 和 vh 等,含义解析如下: 1 . rpx (响应像素): 是微信小程序中的一种相对长度单位,可以根据屏幕宽度进行自适应缩放。 1rp…

PTA 对于下列程序,正确的是() 。void f(int *p){ *p = 5;}int main(void){ int a, *p; a = 10;

对于下列程序,正确的是() 。 void f(int *p) {*p 5; } int main(void) {int a, *p;a 10;p &a;f(p);printf(“%d”, (*p));return 0; }A.5 B.6 C.10 D.11 答:A 解析:这里考察当是指针作为函数的参数。这里将 p …

python脚本批量关闭exe文件

python脚本批量关闭exe文件 1、安装psutil库 pip install psutil2、示例代码 """ @contact: 微信 1257309054 @file: main.py @time: 2024/3/9 21:16 @author: LDC """ import os import time import psutildef is_process_running(process_n…

docker删除、停止所有容器或镜像

docker删除、停止所有容器或镜像 列出所有的容器 ID docker ps -aq停止所有容器 docker stop $(docker ps -aq)删除所有容器 docker rm $(docker ps -aq)删除所有镜像 docker rmi $(docker images -aq)

算法之对于算法的想法

小插曲 很早就参加过头条的面试,真的很早以前,头条那时还不是很火,自己的首先也不是头条。就知道对算法特别的重视,现实也的确如此。记得还是面对面的面试, 忘记一面的算法题目了,不过当时是有思路的&…

Codeforces Round 719 (Div. 3)除F2题外补题报告

Codeforces Round 719 Div. 3 除F2题外补题报告 得分情况补题情况错题分析C题题目大意初次思路正解思路正解代码错误原因 D题题目大意初次思路正解思路正解代码错误原因 E题题目大意初次思路正解思路正解代码 F1题题目大意正解思路正解代码 G题题目大意正解思路正解代码 得分情…

EDA 许可证调度

背景 在芯片设计和HPC行业EDA软件的许可证是很昂贵的数据资源,如何高效利用许可证以及计算资源是系统管理员需要认真思考的问题。 商用解决方案 LSF是芯片和HPC行业流行的调度方案,LSF产品家族包含了许可证调度的功能。它提供了许可证管理和调度功能&…

开发知识点-C++之win32与NT内核

win32 Windows MFC编程 常用API汇总EnumWindows()函数UpdateData()函数static与 单例 设计模式函数原型:BOOL WINAPI SetConsoleTitle(__in LPCTSTR lpConsoleTitle);HWND 是一个基本类型 表示窗口句柄FindWindow函数SendMessage函数 将指定的消息发送到一个或多个窗口PostMes…