题解 | #跳台阶扩展问题#
跳台阶扩展问题
https://www.nowcoder.com/practice/953b74ca5c4d44bb91f39ac4ddea0fee
#先列出规则 #台阶数 跳跃顺序 #1 1 #2 11 2 #3 111 21 12 3 第三个台阶可以有3种跳法,1、可以看做是以第二个台阶跳一步可以到达第三个台阶,那么跳跃顺序为111 21(跟到达第二台阶方法数一样)。 2、看做从第一个台阶跳两步达到第三个台阶,也就是12。所以第三个台阶总的跳跃方法就是2者相加 3、直接跳3个台阶,也就是3 #4 1111 211 121 31 112 22 13 4 #第四个台阶那就有4种跳法,1、第3个台阶跳一步到达4个台阶,那么跳跃顺序为1111 211 121 31。 2、第2个台阶跳两步达到第4个台阶,跳跃顺序为112 22。 3、第1个台阶跳3步,跳跃顺序为13 4、一步到位,跳跃顺序:4 #规律已经出来了。 n个台阶跳法为前n-1个台阶跳法总和,再加上一步到位的顺序 # dp公式:dp[n] = sum(dp[:n])+1 n = int(input()) dp = [1 for i in range(n)] for i in range(1, n): dp[i] = sum(dp[:i])+1 print(dp[n-1])