栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

小明爬楼梯--python

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

小明爬楼梯--python

'''

题目:一共有15台阶,小明每次可以爬一节,或者两节,或者三阶。
思路:
第一种
如果把她用数学语言符号化1阶台阶分解成1,意味着只有一种方法;2可以分解成2和1 1意味着二阶台阶有两种算法。3可以分解成 0 3,2 1,1 2 ,111
四种上法。用字典表达式{1:1,2:2,3:4}
思想是不管你上多少台阶都是由123台阶上法组合而来的。

考虑一下如何到达第4层楼梯
4可以分解成0 4,3 1 ,1 3 ,2 2,2 1 1,1 2 1,1 1 2 ,1 1 1 1分解成8种而只能用1 2 3 组合所以7种
5可以分解成16种,因为只能用1 2 3 组合所以13种
6可以分解为32种,因为只能用1 2 3 组合所以24种
删除元素的规律我没有找到,换下面的思路进行写题



第二种思路:
如何到达5台阶呢?
从4台阶上一个
从3台阶上两个
从2台阶上三个
只有以上这三种情况,三种情况相加就是就是达到5台阶的总算法
设到达4台阶有x种方法,到达3台阶有y种方法,到达2台阶有z种方法
所以到达5台阶就是x+y+z转成函数就是下列函数表达式
f(n)=f(n-1)+f(n-2)+f(n-3) n>=4
'''
def climbStairs1(n):
#递推法
    a=1
    b=2
    c=4
    for i in range(n-3):
        c,b,a=a+b+c,c,b
    return c
print(climbStairs1(15))
上面用的是斐波那契数列算法
下面是递归算法
def climbStairs2(n):
    first={1:1,2:2,3:4}
    if n in first.keys():
        return first[n]
    else:
        return climbStairs2(n-1)+climbStairs2(n-2)+climbStairs2(n-3)
print(climbStairs2(15))
'''
如果最多爬四阶台阶,原理是一样的
怎么到达15台阶?
14上一层
13上二层
12上三层
11上四层
f(n)=f(n-1)+f(n-2)+f(n-3)+f(n-4)
'''
def climbStairs3(n):
    first={1:1,2:2,3:4,4:8}
    if n in first.keys():
        return first[n]
    else:
        return climbStairs3(n-1)+climbStairs3(n-2)+climbStairs3(n-3)+climbStairs3(n-4)
print(climbStairs3(15))

那个数学语言算法是我第一种想到的解法,奈何没有找到删除规律,只能搁浅。希望大家可以给我提下见解,谢谢你们在我修炼python路上提供的帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339932.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号