Python使用回溯法子集树模板解决爬楼梯问题示例


Posted in Python onSeptember 08, 2017

本文实例讲述了Python使用回溯法子集树模板解决爬楼梯问题。分享给大家供大家参考,具体如下:

问题

某楼梯有n层台阶,每步只能走1级台阶,或2级台阶。从下向上爬楼梯,有多少种爬法?

分析

这个问题之前用分治法解决过。但是,这里我要用回溯法子集树模板解决它。

祭出元素-状态空间分析大法:每一步是一个元素,可走的步数[1,2]就是其状态空间。不难看出,元素不固定,状态空间固定。

直接上代码。

代码

'''爬楼梯'''
n = 7 # 楼梯阶数
x = []  # 一个解(长度不固定,1-2数组,表示该步走的台阶数)
X = []  # 一组解
# 冲突检测
def conflict(k):
  global n, x, X
  # 部分解步的步数之和超过总台阶数
  if sum(x[:k+1]) > n:
    return True
  return False # 无冲突
# 回溯法(递归版本)
def climb_stairs(k): # 走第k步
  global n, x, X
  if sum(x) == n: # 已走的所有步数之和等于楼梯总台阶数
    print(x)
    #X.append(x[:]) # 保存(一个解)
  else:
    for i in [1, 2]: # 第k步这个元素的状态空间为[1,2]
      x.append(i)
      if not conflict(k): # 剪枝
        climb_stairs(k+1)
      x.pop()       # 回溯
# 测试
climb_stairs(0) # 走第0步

效果图

Python使用回溯法子集树模板解决爬楼梯问题示例

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python中使用strip()方法删除字符串中空格的教程
May 20 Python
详解Python中的日志模块logging
Jun 19 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
python实现石头剪刀布程序
Jan 20 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
Python完成毫秒级抢淘宝大单功能
Jun 06 Python
Python使用正则表达式分割字符串的实现方法
Jul 16 Python
python面向对象 反射原理解析
Aug 12 Python
Python Selenium安装及环境配置的实现
Mar 17 Python
解决IDEA 的 plugins 搜不到任何的插件问题
May 04 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
解决Django响应JsonResponse返回json格式数据报错问题
Aug 09 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
Sep 08 #Python
python中实现指定时间调用函数示例代码
Sep 08 #Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 #Python
python中实现延时回调普通函数示例代码
Sep 08 #Python
TensorFlow安装及jupyter notebook配置方法
Sep 08 #Python
老生常谈Python startswith()函数与endswith函数
Sep 08 #Python
python学习必备知识汇总
Sep 08 #Python
You might like
用函数读出数据表内容放入二维数组
2006/10/09 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
PHP SEO优化之URL优化方法
2011/04/21 PHP
解析php5配置使用pdo
2013/07/03 PHP
PHP实现简单实用的验证码类
2015/07/29 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
Thinkphp集成抖音SDK的实现方法
2020/04/28 PHP
popdiv
2006/07/14 Javascript
jscript之List Excel Color Values
2007/06/13 Javascript
Div Select挡住的解决办法
2008/08/07 Javascript
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
Javascript Web Slider 焦点图示例源码
2013/10/10 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
Python函数式编程指南(三):迭代器详解
2015/06/24 Python
python读取TXT每行,并存到LIST中的方法
2018/10/26 Python
Python列表原理与用法详解【创建、元素增加、删除、访问、计数、切片、遍历等】
2019/10/30 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
潘多拉珠宝美国官方网站:Pandora US
2020/06/18 全球购物
法制宣传实施方案
2014/03/13 职场文书
委托协议书范本
2014/04/22 职场文书
防沙治沙典型材料
2014/05/07 职场文书
环保志愿者活动总结
2014/06/27 职场文书
检讨书怎么写
2015/01/23 职场文书
2015大学生自我评价范文
2015/03/03 职场文书
《搭石》教学反思
2016/02/18 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
Python深度学习之实现卷积神经网络
2021/06/05 Python
CSS控制继承中的height能变为可继承吗
2022/06/10 HTML / CSS