伪代码:

全部代码:

a=[]
b=[]
def f(x,y,z):
    b.append([x,y,z])
    if x==15 and y==15:
        print(x,y,z)
        i=0;
        for x in b:
            print(i,x,end="\n")
            i+=1
        exit()
    if [x,y,z] not in a:
        a.append([x,y,z])

    else:
        b.pop()
        return
    y1,y2,y3=30-x,17-y,13-z
    xt,yt,zt = 0,0,0
    # way1:
    if x>y2:
        xt,yt,zt=x-y2,17,z
    else:
        xt,yt,zt=0,y+x,z
    f(xt,yt,zt)
    # way2:
    if x>y3:
        xt,yt,zt=x-y3,y,13
    else:
        xt,yt,zt=0,y,z+x
    f(xt,yt,zt)

    # way3:
    if y>y1:
        xt,yt,zt=30,y-y1,z
    else:
        xt,yt,zt=x+y,0,z
    f(xt,yt,zt)
    # way4:
    if y>y3:
        xt,yt,zt=x,y-y3,13
    else:
        xt,yt,zt=x,0,z+y
    f(xt,yt,zt)

    # way5:
    if z>y1:
        xt,yt,zt=30,y,z-y1
    else:
        xt,yt,zt=x+z,y,0
    f(xt,yt,zt)
    # way6:
    if z>y2:
        xt,yt,zt=x,17,z-y2
    else:
        xt,yt,zt=x,y+z,0
    f(xt,yt,zt)

f(30,0,0)

运行结果:

15 15 0
0 [30, 0, 0]
1 [13, 17, 0]
2 [0, 17, 13]
3 [17, 0, 13]
4 [17, 13, 0]
5 [4, 13, 13]
6 [4, 17, 9]
7 [21, 0, 9]
8 [21, 9, 0]
9 [8, 9, 13]
10 [8, 17, 5]
11 [25, 0, 5]
12 [25, 5, 0]
13 [12, 5, 13]
14 [12, 17, 1]
15 [29, 0, 1]
16 [29, 1, 0]
17 [16, 1, 13]
18 [16, 14, 0]
19 [3, 14, 13]
20 [3, 17, 10]
21 [20, 0, 10]
22 [20, 10, 0]
23 [7, 10, 13]
24 [7, 17, 6]
25 [24, 0, 6]
26 [24, 6, 0]
27 [11, 6, 13]
28 [11, 17, 2]
29 [28, 0, 2]
30 [28, 2, 0]
31 [15, 2, 13]
32 [15, 15, 0]
[Finished in 0.1s]

  

30L,17L,13L容器分油,python递归,深度优先算法的更多相关文章

  1. python 递归深度优先搜索与广度优先搜索算法模拟实现

    一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件2.找出这一次和上一次关系3.假设当前 ...

  2. python 递归,深度优先搜索与广度优先搜索算法模拟实现

    一.递归原理小案例分析 (1)# 概述 递归:即一个函数调用了自身,即实现了递归 凡是循环能做到的事,递归一般都能做到! (2)# 写递归的过程 1.写出临界条件 2.找出这一次和上一次关系 3.假设 ...

  3. 用Python递归解决阿拉伯数字转为中文财务数字格式的问题(2)--打开思路的一种方法

    几天前自己写了个将阿拉伯数字转为中文财务数字的程序.用的递归,不幸的是它是树形递归. 虽然实际过程中不太可能出现金额数字大到让Python递归栈溢出,但是始终是一块心病,这玩意终究在理论上是受限制的. ...

  4. Python递归_打印节点信息

    Python递归_打印节点信息 递归特性:1.必须由一个明确的结束条件2.每次进入更深一层递归时,问题规模相比上一次递归都应该有所减少3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用时 ...

  5. pycharm使用docker容器的python解释器,

    上一篇是pycharm调用docker的镜像的python解释器. 此篇介绍pycharm 调用docker的容器的python解释器. 这两个思路还是不一样的,第一个是用pycham界面的选择pyt ...

  6. Python——递归、二分查找算法

    递归函数 1. 递归 (1)什么是递归:在函数中调用自身函数(2)最大递归深度:默认997/998——是Python从内存角度出发做的限制 n = 0 def story(): global n n+ ...

  7. Python递归实现汉诺塔

    Python递归实现汉诺塔: def f3(n,x,y,z): if(n==1): print(x,'--->',z) else: f3(n-1,x,z,y) print(x,'--->' ...

  8. python递归列出目录及其子目录下所有文件

    python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 e ...

  9. python(递归实例)

    摘要:在学习python递归知识点时,总是一知半解,似懂非懂的..在反复看视频翻资料同时,也收集案例来分析求证..通过分析下面几个案例希望能有所帮助!!! 1.用递归的方法实现阶乘... def nu ...

随机推荐

  1. unity射线检测

    unity中射线检测时非常实用也经常实用的一种手段.下面讲解一下射线检测问题. 1)Ray 根据射线端点和射线的方向定义一条射线 Ray ray= new Ray(transform.position ...

  2. Unity C#数据持久化与xml

    最近工作需要用到数据持久化,所以在此分享一下,通过查阅资料,数据持久化大体都是通过xml或者json来进行的.unity为我们自定义了数据持久化方法,但是比较局限,还需要自己来完成数据持久化方法. ( ...

  3. 当node版本升级到8.0以上带来的问题

    1.新增package-lock.json 2.相关babel更新 重新安装 $ npm install babel-preset-env --save-dev .babelrc文件修改 { + &q ...

  4. Python能做什么,自学Python效果怎么样?

    短时间掌握一门技能是现代社会的需求.生活节奏越来越快,现在不是大鱼吃小鱼,而是快鱼吃慢鱼的时代,人的时间比机器的时间更值钱.Python作为一种轻量级编程语言,语言简洁开发快,没那么多技巧,受到众多追 ...

  5. django & celery - 关于并发处理能力和内存使用的小结

    背景 众所周知,celery 是python世界里处理分布式任务的好助手,它的出现结合赋予了我们强大的处理异步请求,分布式任务,周期任务等复杂场景的能力. 然鹅,今天我们所要讨论的则是如何更好的在使用 ...

  6. 高频Linux命令小结(新手向)

    示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端>原创博文目录 华为云社区地址:[你要的前端打怪升级指南] 近期 ...

  7. 初始bat命令

    任务:manven打包的jar包以及相关的bat文件,要将其设置为开机自启动. bat :批处理文件,通过简单的命令行方式对windows进行操作. 简单的bat命令: 1echo 显示命令,@带着个 ...

  8. FastDFS图片服务器单机安装步骤

    前面已经讲 一张图秒懂微服务的网络架构,通过此文章可以了解FastDFS组件中单机安装流程. 单机版架构图 以下为单机FastDFS安装步骤 一.环境准备 CentOS 7.X libfastcomm ...

  9. 『题解』Codeforces656E Out of Controls

    更好的阅读体验 Portal Portal1: Codeforces Portal2: Luogu Description You are given a complete undirected gr ...

  10. 面试开挂:近百道Java面试题整理

    1.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件. Java被 ...