Python数据结构与算法练习:强迫症老板和他的洗碗工

Python习题:强迫症老板和他的洗碗工(包括栈的定义) Python习题:强迫症老板和他的洗碗工【中国大学MOOC陈斌老师题目】题目内容输入样例1输出样例1输入样例2输出样例2代码 题目内容 洗碗工小明碰上了一位强迫症老板老王,餐厅一共就10只盘子,老板给仔细编上了0~9等10个号码,并要求小明按照从0到9的编号来洗盘子,当然,每洗好一只盘子,就必须得整齐叠放起来。 小明洗盘子期间,经常就有顾客来取盘子,当然每位顾客只能从盘子堆最上面取1只盘子离开。 老王在收银台仔细地记录了顾客依次取到盘子的编号,比如“1043257689”,这样他就能判断小明是不是遵照命令按 阅读详情

题目内容:
洗碗工小明碰上了一位强迫症老板老王,餐厅一共就10只盘子,老板给仔细编上了0~9等10个号码,并要求小明按照从0到9的编号来洗盘子,当然,每洗好一只盘子,就必须得整齐叠放起来。
小明洗盘子期间,经常就有顾客来取盘子,当然每位顾客只能从盘子堆最上面取1只盘子离开。
老王在收银台仔细地记录了顾客依次取到盘子的编号,比如“1043257689”,这样他就能判断小明是不是遵照命令按照0123456789的次序来洗盘子了。
写一个程序,准确判断小明是否按照顺序去洗盘子了。
代码如下:

# -*- coding: utf-8 -*-
#By AntinSnow
class stackDT:
    '''构建栈的数据类型'''
    def __init__(self):
        self.items = []
    def isempty(self):
        return self.items == []
    def push(self, item):
        self.items.append(item)    
    def pop(self):
        return self.items.pop()  
    def peek(self):
        return self.items[-1]
    def size(self):
        return len(self.items)
def pushstack(roomstr1, roomstr2):
    '''把栈1数据依次压入栈2'''
    while not roomstr1.isempty():
        a = roomstr1.pop()
        roomstr2.push(a)
    return roomstr2

def change(roomstr1, roomstr2):
    '''把栈2平移到栈1下面'''
    roomstr3 = stackDT()
    roomstr3 = pushstack(roomstr1, roomstr3)
    roomstr1 = pushstack(roomstr3, roomstr2)
    return roomstr1

def main():
    checkstr = list(input())
    roomstr1 = stackDT()
    roomstr2 = stackDT()
    roomstr1.push(eval(checkstr[0]))    #直接把第一个数压入第一个栈顶
    for i in checkstr[1:]:
        j = eval(i)
        if roomstr2.isempty():          #如果第二个栈为空,且第一个栈顶数字比外面数字大,则压入第一个栈,负责压入第二个栈
            if roomstr1.peek() > j:
                roomstr1.push(j)
            else:
                roomstr2.push(j)
        else:                           #如果第二个栈不为空
            if roomstr2.peek() < j:     #如果外面数字比栈顶数字大,则把栈2放到栈1底部,清空栈2
                roomstr1 = change(roomstr1,roomstr2)
                roomstr2 = stackDT()
            roomstr2.push(j)            #把数字压入栈2
        
    if not roomstr2.isempty():          #处理结束后,若栈2不为空,则把栈2放到栈1下面
        roomstr1 = change(roomstr1,roomstr2)
    if roomstr1.items == [9,8,7,6,5,4,3,2,1,0]:
        print('Yes')
    else:
        print('No')

main()

题目来自中国大学MOOC中北京大学陈斌副教授的MOOC:《数据结构与算法Python版》
ps:交作业时候第四个案例没过,不知道什么原因,暂时没找出来。如果有大神发现,请留言。

Python数据结构:强迫症老板和他的洗碗工 强迫症老板和他的洗碗工 题目内容: 洗碗工小明碰上了一位强迫症老板老王,餐厅一共就10只盘子,老板给仔细编上了0~9等10个号码,并要求小明按照从0到9的编号来洗盘子,当然,每洗好一只盘子,就必须得整齐叠放起来。 小明洗盘子期间,经常就有顾客来取盘子,当然每位顾客只能从盘子堆最上面取1只盘子离开。 老王在收银台仔细地记录了顾客依次取到盘子的编号,比如“1043257689”,这样他就能判断小明是不... 阅读详情

相关推荐

python数据结构与算法学习之基本结构

线性结构

Daley_的博客 1532

【mooc北大数据结构】【数据结构与算法python】第三周作业

前几次运行不通过原因:栈的定义这个没有放进去,自己在编写程序的时候由于是下载了老师提供的资源,然后在程序一开始就导入了Stack,因此自己测试的时候没有问题,oj上会出现程序异常; from pythonds.basic.stack import Stack 【网页提交注意点】:提交的时候要把用到的数据结构的定义先放上去 1.有效的括号 思路: class Stack: def __i...

qq_33749437的博客 555

《数据结构与算法Python版》作业题思路以及自我总结·第一~三章

前三周的题目相对简单,大概比较麻烦的是最后一个题。 空心等腰三角形:a.注意给input强制转换int;b.把打印分为顶点、腰和底边三部分;c.因为每一行边占一个字符,所以每行两侧空格要在半边长的基础上-1; 替换单词:可以用 while i < len(word) 循环,这样在检测到‘e’的时候,马上继续检测下一个字符,如果还是‘e’就一起改,并将i自加1,跳过一个字符; ...

代码 450

北大2020春数据结构课OJ作业 强迫症老板和他的洗碗工

题目描述 结题思路主要还是利用堆栈的特性. 洗碗工洗好的盘子摆放起来明显是一个堆栈. 我们用堆栈的出站入站来模拟洗盘子取盘子的过程.根据是否出现矛盾,进行判断. 从此处入手分析可知: start 初始为0 首先我们假设洗碗工是按照要求顺序洗盘子的,因此可以将客户取到的盘子分为三种情况: 堆栈为空或者盘子号大于栈顶元素,将从start到取到的盘子号的盘子都push进堆...

zachzhan_g的博客 1301

数据结构与算法(Python版) | (5) 堆栈OJ作业

OJ地址 1. 有效的括号 class Stack: def __init__(self): self.items = [] def isEmpty(self): return self.items == [] def push(self,item): self.items.append(ite...

sdu_hao的博客 559

产生10个长度为10的不能重复的字符串(里面只能出现大写字母、小写字母、0-9的数字),并遍历打印输出

产生10个长度为10的不能重复的字符串(里面只能出现大写字母、小写字母、0-9的数字),并遍历打印输出 刚有个同事拿来一个面试题,说这个还挺复杂的,其实,我感觉她应该是想复杂了,这个题目的关键就是用Set集合去装那10个长度为10的字符串,因为Set不能有重复的元素,所以用Set可以减少想当多的麻烦,部分关键代码如下: //产生10个长度为10的不能重复的字符串(里面只能出现大写字母、小写字母

kai1098126841的博客 6608

数据结构与算法python版 MOOC 第三周

三、基本线性结构 1. 内容 定义线性结构 讲解栈的结构结构 栈的应用:简单括号匹配,进制转换,表达式转换(前缀,中缀,后缀) 2. 课程代码 在GitHub中下载 3. OJ作业 所有代码均可在github中下载 3.1 有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 输入格式: 一行字符串 输出格式:True或False,

qq_45347185的博客 512

SAP中常见的Debug方式

原文链接:https://mp.weixin.qq.com/s/wT4kThFKYV0PQYhCqpXRWg 大家可以关注我个人公众号,所有分享内容,会在公众号第一时间推送,且阅读排版更好。 愿大家的学习,轻松且愉快。 如果大家觉得有用,希望转发关注,谢谢 导读 SAP系统在企业的应用时,都不会只使用标准功能。 通常情况下,基于特殊的行业需求,以及某些业务部门的管理需求等,都会额外开发出一些增强,报表,对话功能,接口等,从而保证系统的正常运转。 标准知识的逻辑,我们...

Kerwin-G的博客 1万+

强迫症老板和他的洗碗工

题目内容: 洗碗工小明碰上了一位强迫症老板老王,餐厅一共就10只盘子,老板给仔细编上了0~9等10个号码,并要求小明按照从0到9的编号来洗盘子,当然,每洗好一只盘子,就必须得整齐叠放起来。小明洗盘子期间,经常就有顾客来取盘子,当然每位顾客只能从盘子堆最上面取1只盘子离开。老王在收银台仔细地记录了顾客依次取到盘子的编号,比如“1043257689”,这样他就能判断小明是不是遵照命令按照0123456...

Ginny_sky的博客 1383

保姆级教程:用torch.profiler给你的vLLM推理做个“全身体检”(附Perfetto可视化分析)

本文提供了一份详细的vLLM推理性能分析教程,通过torch.profiler和Perfetto工具链实现从数据采集到可视化分析的全流程。文章涵盖了环境配置、性能数据采集、trace文件解析以及Perfetto可视化分析,帮助开发者优化大模型推理服务的性能,显著降低计算资源消耗。

weixin_29041767的博客 357

Unity Shader实战:用Matcap给你的低模角色快速换上‘次世代’材质(附完整Shader代码)

本文详细介绍了Unity中Matcap技术的实战应用,通过Shader代码实现低模角色的次世代材质表现。Matcap技术利用预烘焙光照贴图,显著提升材质质感同时保持极低性能消耗,特别适合移动游戏和独立开发。文章包含完整Shader代码、平面模型着色优化方案及动态环境反射增强技巧,帮助开发者快速提升低模视觉效果。

weixin_28718755的博客 385

MOOC数据结构与算法Python版:有效的括号,一维开心消消乐,强迫症老板和他的洗碗工

1、有效的括号(10分) 题目内容: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 输入格式: 一行字符串 输出格式: True或False,表示该输入是否为合法括号串 ...

zzy_ucas的博客 1443

Scipy优化踩坑实录:trust-constr和SLSQP约束定义到底差在哪?

本文深入解析了Scipy优化模块中trust-constr和SLSQP两种方法在约束定义上的差异。通过对比面向对象的trust-constr和字典式定义的SLSQP,揭示了它们各自的优势与适用场景,帮助开发者在有约束优化问题中选择合适的算法,提升计算效率与准确性。

weixin_42573113的博客 271

数据结构与算法Python版第三周OJ作业

1 有效的括号(10分) 题目内容: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 输入格式: 一行字符串 输出格式: True或False,表示该输入是否为合法括号串 输入样例: ([]) 输出样例: True 解...

Divine0的博客 1446

17、自适应和学习索引:在线物理设计调整的新维度

本文探讨了现代数据库管理系统中自适应索引和数据库裂解的新方法,通过结合学习模型与多臂老虎机(MAB)框架,实现在线物理设计调整。文章详细介绍了自适应索引的工作原理、数据库裂解技术以及如何利用机器学习进行索引选择和优化,并讨论了MAB框架在动态调整索引结构中的应用及其实际案例。

go5gopher的博客 81

基于QT+Halcon实现线序识别

一、线序识别算法步骤。 1.按照检测区域m_pItem1的外接矩形(rtBount)的大小, 截取感兴趣区域图像hRoi。 2.把截取出来的感兴趣区域图像hRoi, 分离出R、G、B三个通道hRed、hGreen、hBlue。 3.把hRed、hGreen、hBlue三个通道转换成cielab颜色空间, 得到hChannelL、hChannelA、hChannelB三个颜色图。 4.设m_pItem1的宽为iItemW, 高为iItemH. 分别申请大小为iItemW的pSumL、pSumA、pSumB内

专注现代C++实战,从核心语法到高性能编程,助力开发者深入掌握系统级编程精髓。 1748

洗碗工和强迫症老板(python 栈的定义与使用)

洗碗工和强迫症老板(python 栈的定义与使用) 题目: 洗碗工小明碰上了一位强迫症老板老王,餐厅一共就10只盘子,老板给仔细编上了0~9等10个号码, 并要求小明按照从0到9的编号来洗盘子,当然,每洗好一只盘子,就必须得整齐叠放起来。 小明洗盘子期间,经常就有顾客来取盘子,当然每位顾客只能从盘子堆最上面取1只盘子离开。 老王在收银台仔细地记录了顾客依次取到盘子的编号,比如“1043257689”, 这样他就能判断小明是不是遵照命令按照0123456789的次序来洗盘子了。 你也能像老王一样作出准确的判断

qq_41454432的博客 621

锂电池寿命预测 | Pytorch实现基于Transformer 的锂电池寿命预测(NASA数据集)

锂电池寿命预测 | Pytorch实现基于Transformer 的锂电池寿命预测(NASA数据集)

算法如诗的博客 5586

《数据结构与算法分析python版》第三周编程作业

@[TOC]慕课《数据结构与算法python版》第三周变成作业 一维开心消消乐 题目要求: 脚本 def xxl(s): stack = [] for item in s: if not len(stack)== 0: #栈非空执行 if item == stack[-1]: ...

Fighting_Du的博客 642

代码的自由之旅:用AI写出无版权烦恼的Verilog

他们还基于这个数据集,训练了一个名叫“FreeV”的AI模型,不仅能写出好用的Verilog代码,还把版权侵权的风险降到了仅3%。为了让AI安全地写Verilog,研究团队提出了三个“法宝”:一个检测AI是否会生成侵权代码的测试方法、一个干净的Verilog数据集FreeSet,还有一个基于FreeSet训练的AI模型FreeV。AI的记忆力超强,能记住训练时见过的代码。测试发现,一些用Verilog数据训练过的AI,比如VeriGen,生成侵权代码的概率从9%涨到了15%,说明它们可能学了不该学的代码。

步子哥的博客 1810

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数据结构与算法Python版——第三周作业

1有效的括号(10分)题目内容:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]'的字符串,判断字符串是否有效。 有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。 输入格式: 一行字符串 输出格式: True或False,表示该输入是否为合法括号串 输入样例1: ([]) 输出样例1: True 输入样例2: {{)]}...

Cluciuu的博客 850

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

mooc数据结构与算法python版第十周作业_MOOC数据结构与算法Python编程第三周,版,作业...

1 有效的括号(10分)题目内容:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。输入格式:一行字符串输出格式:True或False,表示该输入是否为合法括号串输入样例:([])输出样例:True解题思路:遍历字符串,遇到左括号时入栈,遇到...

weixin_33188115的博客 269

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

数据结构与算法Python版-第三周作业

1. 有效的括号(10分) 题目内容: 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]'的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 输入格式: 一行字符串 输出格式: True或False,表示该输入是否为合法括号串 输入样例1: ([]) 输出样例1: True 输入样例2: {{)]} 输出样例2: False 时间限制:500ms内存限制:32000kb from pythond

蓝凌女巫的博客 700

强迫症

DescriptionSolution整数的话都会吧,分数手算也会吧。 那合起来就好了。注意用long long#include<bits/stdc++.h> using namespace std;#define ll long longinline int read() { int x = 0, flag = 1; char ch = getchar(); while (!isdigi

整型的映山红 336

洗碗工问题 栈的一个小例子

洗碗工 Python栈的一个小例子 前言 Python栈的一个小例子 在学习python的数据结构与算法时,在栈这一章节有一道洗碗工的问题,很有意思,有一定的难度,在csdn上找到的好几个代码中很多都考虑的不太全面,所以我将b站陈斌老师的作业讲解的代码稍加修改 代码如下: 一.先需要手写一个.py的栈的class: class Stack: def __init__(self): self.items = [] def isEmpty(self): r

liulisss的博客 1029
上一篇: Python数据结构与算法练习:字母消消乐
下一篇: Python数据结构与算法练习:10进制转2进制
AntInSnow
博客等级 码龄7年 31粉丝 66原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值