python3 斐波那契数列以及爬楼梯

2021/9/6 22:08:17

本文主要是介绍python3 斐波那契数列以及爬楼梯,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

动态规划算法

本质上是这步的“价值”由上一步决定,比如求公共最长子序列:

例子(来源 算法图解)

用户在使用搜索引擎,比如搜索fosh。那我们就要猜测用户是想要搜索fish还是fort.怎么求取公共最长子序列。做一个4*4网格,每个网格的计算方式都由上一格来决定。

if word_a[i] == word_b[j]:
    cell[i][j] = cell[i-1][j-1] + 1
else:
    cell[i][j] = max(cell[i-1][j], cell[i][j-1])

最终填满方格的结果就是答案。

leetcode 70题 爬楼梯 经典题型

n个台阶,一次走1阶或者2阶。共有几种走法?

其实这个是一个斐波那契数列,n=1的时候1种,n=2时2种。在n阶时,要么就从n-1上来,要么就从n-2上来,所以n时的方法数就是n-1和n-2两个台阶上方法的和。

class Solution:
    def climbStairs(self, n: int) -> int:
        if n <= 2:
            return n
        dp = [0] * n
        dp[0] = 1
        dp[1] = 2
        for i in range(2, n):
            dp[i] = dp[i-1] + dp[i-2]
        return dp[n-1]

或者使用经典的做法:(简化到最优了)

class Solution:
    def climbStairs(self, n: int) -> int:
        a = 1
        b = 1
        for i in range(1, n+1):
            a, b = b, a + b #此时i=1,a=1  i=2,a=2  i=3,a=3
        return a



这篇关于python3 斐波那契数列以及爬楼梯的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程