动态规划可以用来求解台阶问题,即在一个楼梯上,每次只能跨一个台阶或两个台阶,问有多少种不同的方式可以走到楼梯的顶部。
我们可以定义一个状态变量dp[i],表示走到第i个台阶的不同方式数。则在第i个台阶上,只有两种走法:从第i-1个台阶跨一步上来,或者从第i-2个台阶跨两步上来。因此,状态转移方程为:
dp[i] = dp[i-1] + dp[i-2]
其中dp[0] = 1,dp[1] = 1,表示在第0个台阶和第1个台阶只有一种走法。
可以通过迭代的方式计算出dp[n],即走到第n个台阶的不同方式数,其中n为台阶的总数。
下面是使用动态规划求解台阶问题的Python代码:
def stair(n):dp = [0] * (n+1)dp[0] = 1dp[1] = 1for i in range(2, n+1):dp[i] = dp[i-1] + dp[i-2]return dp[n]n = 10
print(stair(n))
以上代码输出的结果为89,表示在10个台阶上有89种不同的走法。