从前有一只青蛙想跳台阶去等峰,若该青蛙一次可以跳上1级台阶、也可以跳上2级、还可以跳3级。那么改青蛙从第0级台阶出发,在跳上第n级台阶且在第m级台阶停留过时有多少种跳法。 输入描述: 第一行两个正整数,n和m m<=n 输出描述: 一个整数,表示跳法 输入样例: 4 2 输出样例: 4
def count_ways(n, m):# 动态规划数组 dp[i] 表示从0到达第i级台阶的方法数def ways_to_reach(k):if k == 0:return 1elif k == 1:return 1elif k == 2:return 2dp = [0] * (k + 1)dp[0], dp[1], dp[2] = 1, 1, 2for i in range(3, k + 1):dp[i] = dp[i - 1] + dp[i - 2] + dp[i - 3]return dp[k]# 计算从起点到第m级台阶的方法数ways_to_m = ways_to_reach(m)# 计算从第m级台阶到第n级台阶的方法数ways_from_m_to_n = ways_to_reach(n - m)# 总方法数total_ways = ways_to_m * ways_from_m_to_nreturn total_ways# 输入
n, m = map(int, input().strip().split())# 输出
print(count_ways(n, m))