python 实现要爬十级台阶 一次可以爬一级也可以爬两级也可以爬三级总共有多少种方法

在面试流体网络这家公司的时候出现了这个填空题

晚上在自己没有思绪的时候请教了之前关注的公众号python猫(微信号:python_cat)中的作者创建的的交流群,很快得到解决,在此谢谢大伙儿 开始下代码了:

首先思路:动态规划

分析为一个斐波那契的问题 后仔细想思路在处理10级台阶的时候 采用倒推的方式 在到达第十级的时候 所需要的方法为1 9 ->1 一种方法; 8->1 1&2 二种方法 ;7->1,1,1&2,1&1,2&3 四种方法 依次类推 代码方式如下:

# 实现 功十级 爬一步 两步 或三步:
class Solution:
    def climbStaies(self,n):
        f = [1,1,2]
        for i in range(3,n+1)
            f.append(f[i-1]+f[i-2]+f[i-3])
        return f[n]
a = Solution()
b = a.climbStaies(10)
print(b)# 274 种方法

一级 两级 方式

# 实现 功十级 爬一步 或两步
class Solution:
    def climbStaies(self,n):
        f = [1,1]
        for i in range(2,n+1):
            f.append(f[i-1]+f[i-2])
        print(f)
        return f[n]
a = Solution()
b = a.climbStaies(10)
print(b) # 89 种

希望能给大家帮助,再次感谢群里的兄弟们

你可能感兴趣的:(面试)