解开了埃及金字塔修建秘密的考古队,现在准备进入金字塔内进行更深一步的考古工作,教授们在探险的过程中,发现了一道石门,石门上雕刻着斯芬克斯的神像,石门前放着两个罐子,罐子上标着数字,神像的头上用双手拖着一个盘子,盘子上了标着数字,神像的嘴里不停的吐着水。
教授们发现,需要打开这扇石门,需要将盘子上放上与数字重量相等的物品,另外,罐子上标着的数字代表罐子的容量。所以,考古队需要想办法用这两个罐子接到盘子上重量的水才能打开这扇石门。
现在给定你两个数字a和b,代表两个罐子的容量,再给你一个数V,代表盘子上标着的数字,你可以向罐子里倒水,将罐子里的水倒空,将一个罐子里的水倒到另一个罐子里,最终,输出你操作的步骤(fill A 代表装满罐子,empty A代表倒空A罐子,pour A B代表将A罐子里的水倒进B罐子,以此类推)

输入描述:

三个数字a, b, V 分别代表两个罐子的容量和盘子上的数字
(0<a<=b,V<=b<=1000)

输出描述:

输出操作步骤,结尾输出success

示例1

输入 3 5 4

输出 fill B

pour B A

empty A

pour B A

fill B

pour B A

success

代码如下:

class State:def __init__(self,a,b,prev,step,operation):self.a=a   #A现有水量self.b=b   #B现`在这里插入代码片`有水量self.prev=prev   #父节点指针self.step=step   #已扩充的节点数self.operation=operation
#存储已访问的节点,防止重复。首先默认各个位置均为False,访问后置为T
visited=[[False for i in range(100)]for j in range(100)]
def bfs(capativy_a,capativy_b,left_c):queue=[]s=State(a=0,b=0,prev=None,step=0,operation=None)queue.append(s)visited[0][0]=Truewhile queue:state=queue.pop(0)for i in range(6):a ,b ,operation =None,None,Noneif i==0:operation ="empty A"a=0b=state.belif i==1:operation = "empty B"a=state.ab=0elif i==2:operation = "fill A"a=capativy_ab=state.belif i==3:operation = "fill B"b=capativy_ba=state.aelif i==4:#将杯子A的水倒入杯子B中if capativy_b-state.b>state.a:operation="empty A"a=0b=state.a+state.belse :operation="pour A B"b=capativy_ba=state.a-(capativy_b-state.b)elif i==5:#将杯子B的水倒入杯子A中if capativy_a-state.a>state.b:operation="empty B"b=0a=state.a+state.belse:operation="pour B A"a=capativy_ab=state.b-(capativy_a-state.a)if  not visited[a][b]:new_state=State(a=a,b=b,prev=state,step=state.step+1,operation=operation)visited[a][b]=Truequeue.append(new_state)if left_c==a or left_c==b:                    return new_statereturn None def get_path(state):path=[]while state.prev:path.append(state.operation)state  = state.prevreturn path[::-1]def main():    capativy_a,capativy_b,left_c= map(int,input().split(' ') )result= bfs(capativy_a,capativy_b,left_c)if not  result:print("error")else:print("success")p=get_path(result)for i in range(len(p)):print(p[i])
main()

python 编程题 埃及金字塔罐子倒水相关推荐

  1. 记一次面试过程中的Python编程题

    这几天面试过程中遇到一道Python编程题,题目如下: 面试中遇到一个Python编程问题:一个字符串,将里面的数字取出来,如果第一个数字前面是+,表示整个数字为正数,如果第一个数字前面是-,表示数字 ...

  2. 首先定义一个Point (点)类,包含属性x,y(x,y为坐标点),方法有setPoint、getX、getY和OprintInfo...python编程题练习

    复习python编程题集合的第五题,若有错误和改进意见,欢迎评论交流!            首先定义一个Point (点)类:                   (1)包含属性x,y(x,y为坐标 ...

  3. Python编程题每日一练day1(附答案)

    Python编程题每日一练day1

  4. 100+Python编程题给你练(附答案)

    大家如果能坚持独立思考完成以下题目,一定可以帮大家轻松 get Python 的编程技能.目前,这个项目已经获得了 3994 Stars,2952 Forks. Github 地址:Python-pr ...

  5. python编程题-python编程题库

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 上期题目连接:1000道python题库系列分享十一(9道)上期题目答案:? 本期 ...

  6. 从屌丝到高手,三道Python编程题,九种解题算法,看看你属于哪一类

    大家在平时刷题的过程中,不仅仅要注意理解问题的本质,而且要在解决问题的基础上,优化自己的解题思路和程序. 今天,小编就带领大家来进行三道简单问题的解决,从屌丝解法到进阶解法再到高手解法,一步步的带领大 ...

  7. python程序设计题库-python编程题库

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. 上期题目连接:1000道python题库系列分享十一(9道)上期题目答案 ...

  8. python身份证城市定位程序输入点_有关一道身份证的python编程题

    有关一道身份证的题目,要求python解决 就昨天晚上嗷一个妹纸问我这样一道问题哈: 问题: 一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17 ...

  9. Python编程题汇总

    Python编程复习 1.1找出列表中单词最长的一个 找出列表中单词最长的一个def test():a = ["hello", "world", "y ...

最新文章

  1. main函数参数,在VS中向命令行添加参数的方法
  2. icmp反弹shell 简介
  3. CloudStack 的配置、部署与管理,以及 API 的使用
  4. Python mat与array的区别
  5. Java——类加载机制
  6. spring学习(32):使用junit4测试
  7. [Perl] Python 与 Perl 合并,打造史上最牛语言 Parrot
  8. 接口设计考虑点及验证点
  9. C# 委托/Func() 中 GetInvocationList() 方法的使用 | 接收委托多个返回值
  10. USB接口IC读写器oem软件_AB密码完整解决方案/读写卡测试程序及源代码/c++builder源代码(2)
  11. 【过程记录】ArcGIS Pro打开.osgb文件
  12. AI时代,陪孩子玩什么游戏?| 前Google资深工程师实战心法
  13. php剪切透明圆,php把图片处理成圆形透明的图片,做圆形透明头像,圆形头像_编程资料分享...
  14. unix/linux 系统 进程资源限制参数
  15. 计算机室电源插座的配置及配电线路,小型机安装场地要求及机房环境电气要求讲课教案.pdf...
  16. 第一次参加pub的地面聚会
  17. 新手入门电脑和S7 200Smart PLC 的自由口通信
  18. 启动vue项目出现的错误合集
  19. 如何用Python判断水仙花数
  20. 数据挖掘与数据分析的主要区别是什么?

热门文章

  1. 中国网文出海先行者阅文集团四度入选国家文化出口重点企业名单
  2. 奥比中光网络深度摄像头——人脸活体检测
  3. SpringBoot 异常后更改响应状态码
  4. jQuery删除元素---remove()与empty()
  5. python第二阶段(2)入门-数据科学包 pandas
  6. MySQL查询语句in子查询的优化
  7. 操作系统实验报告 实验1 VMware虚拟机配置与linux基本命令(答案全)
  8. Android之集成极光推送
  9. CVE和全球安全漏洞库(NVD, CNNVD, CNVD) 在软件安全检测和验收中的最佳分析工具
  10. Matlab中vpa一直在忙,matlab vpa 函数是什么意思?