经典问题19-上台阶问题

题目

有 n 级台阶
每步只允许迈上 1 级或 2 级
要求刚好用偶数步上完 n 级台阶
求有多少种走法

在这里插入图片描述
比如,当 n = 5时,
只能 4 步(2步无法)
2,1,1,1
1,2,1,1
1,1,2,1
1,1,1,2
所以,一共有 4 种上台阶的方案。

解法1

把走两步看成是一个动作的整体。
这样,完成这个动作后,剩余的台阶仍然要求偶数步上完。
剩余的问题与本问题获得相似性 这是使用递归的关键。

def f(n):
  当 n 很小时,返回结果
  对当前的局面,连走两步有哪些走法?
  for 所有走法:
    令,每种走法消耗的台阶数为 x
    所有走法的 f(n-x) 求和 => t
  返回 t

解法3

考虑定义两个问题:
f1(n) 上 n 级台阶,要求奇数步完成,方案数?
f2(n) 。。。。。,要求偶数步完成,。。。 (即题目中的所求问题)
这样,
f1 中走一步后,可以调用 f2
f2 中走一步后,可以调用 f1
间接递归完成求解

解法2

我们假设根本没有 偶数步 这个要求,
这样就变成了简单的递归问题。
但,
我们可以增加参数,定义辅助函数:
f(n, m)
n 仍然表示剩余的台阶数
m 表示已经走过的步数
这样一来,当递归结束时,可以判断 m 是否符合要求,从而舍弃不合格的方案。

想不通,看代码

# 上台阶问题
# n 级台阶
# 每次只能上 1 级或 2 级
# 要求用偶数步上完台阶
# 求方案数
# 考虑走两步为一个动作单位,有多少种走法?
def step(n
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
KesionCMS功能概述: KesionEshop 在线商城系统拥有十余个主系统模块,如:文章、图片、下载、问答、论坛、商城、团购、供求、人才、考试、影视、动漫、微博及上百个子系统模块如:站内调查、友情链接、广告系统、积分、评论、采集等;百分百开源,让网站二次开发无后顾之忧。功能模块化处理,灵活模板标签调用,轻松打造各种网站效果。集成多家主流支付接口和账号通,微信扫描登陆,融合ucnenter等新功能,新版x1.5系统整体优化再上一台阶。 KesionEshop 在线商城系统 X2.0 正式版(utf-8)更新日志 1、增加使用频率极高的微信支付功能 2、前后台UI重新设计,后台支持UI切换,全新的UI体验; 3、图片,下载、商城、动漫、影视、供求等主模型系统支持将文档发布到多个栏目 4、主模型图片,下载,影视 等增加重名检测功能 5、投诉建议页面,增加验证码,防止垃圾信息 6、文档的生成内容页路径,支持调用文档的添加日期标{$Year}{$Month}{$Day},从而支持按添加日期生成HTML文件目录 7、增加在栏目列表页模板可以用标签{$GetClassDocNum}得到当前栏目的文档数 8、后台会员管理增加搜索会员功能 9、地区升级为三级关联,涉及到的文章,会员,图片,求职等等都支持三级地区级联 10、增加支持日韩文开关,以免导致乱码。具体在conn.asp文件里设置有开关 11、加强主模型筛选代码 Item/index.asp过滤 12、注册保存页面增加是否开启会员注册的开关判断,以免关闭会员还有人通过非法绕过验证而注册成功 13、文章内容页增加标签 {$GetYear} {$GetMonth} {$GetDay} {$GetHour} {$GetMinute} {$GetSecond} 分别得到年、月、日及时、分、秒 14、修复后台批量保存字段排序号,显示空白页 15、改进影视系统支持某视频网站的flash地址播放 16、修复会员中心文章投稿附件上传无法插入到编辑器里 17、最正后台数据库备份,偶尔因数据库连接超时,导致备份不成功 18、修复发布所有专题,找不到专题 19、修复会员中心对微博评论的XSS漏洞 20、改进后台文章管理可以设置是否视频属性 KesionCMS X1.5前台演示效果: KesionCMS X1.5后台管理 后台路径:http://您的域名/Admin/login.asp 默认用户名:admin 密码admin888 后台页面: 相关阅读 同类推荐:商城/网店/购物系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值