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读写ini文件示例(python读写文件)
Mar 25 Python
Python的Django框架中的Context使用
Jul 15 Python
Python通过90行代码搭建一个音乐搜索工具
Jul 29 Python
使用Python多线程爬虫爬取电影天堂资源
Sep 23 Python
Redis使用watch完成秒杀抢购功能的代码
May 07 Python
python ChainMap 合并字典的实现步骤
Jun 11 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
Django实现跨域请求过程详解
Jul 25 Python
Python数据库小程序源代码
Sep 15 Python
python中安装django模块的方法
Mar 12 Python
django创建css文件夹的具体方法
Jul 31 Python
Python list和str互转的实现示例
Nov 16 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
PHP 工厂模式使用方法
2010/05/18 PHP
PHP eval函数使用介绍
2013/12/08 PHP
fckeditor上传文件按日期存放及重命名方法
2015/05/22 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
JavaScript isPrototypeOf和hasOwnProperty使用区别
2010/03/04 Javascript
P3P Header解决Cookie跨域的问题
2013/03/12 Javascript
Bootstrap基础学习
2015/06/16 Javascript
JavaScript编程中布尔对象的基本使用
2015/10/25 Javascript
javascript动画之磁性吸附效果篇
2016/12/09 Javascript
Angular2 路由问题修复详解
2017/03/01 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
JavaScript运动框架 多值运动(四)
2017/05/18 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
Vue使用zTree插件封装树组件操作示例
2019/04/25 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
KnockoutJS数组比较算法实例详解
2019/11/25 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
python动态参数用法实例分析
2015/05/25 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
python绘制规则网络图形实例
2019/12/09 Python
canvas如何实现多张图片编辑的图片编辑器
2020/03/10 HTML / CSS
互动出版网:专业书籍
2017/03/21 全球购物
麦德龙官方海外旗舰店:德国麦德龙超市
2017/12/23 全球购物
信用社实习人员自我鉴定
2013/09/20 职场文书
园林施工员岗位职责
2013/12/11 职场文书
心得体会范文
2014/01/04 职场文书
继电保护工岗位职责
2014/01/05 职场文书
咖啡店创业计划书
2014/08/15 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
司考复习计划
2015/01/19 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python