有九级台阶,一次可以跨一级,二级或三级,问有多少种方法走完?
149种。
解答:解:从简单情况入手:
(1)若有1级台阶,则只有惟一的迈法:a1=1。
(2)若有2级台阶,则有两种迈法:一步一级或一步二级,则a2=2。
(3)若有3级台阶,则有4种迈法:①一步一级地走,②第一步迈一级而第二步迈二级,③第一步迈二级而第二步迈一级,④一级迈三级,a3=4。
(4)若有4级台阶,则按照第一步迈的级数分三类讨论:
①第一步迈一级台阶,那么还剩三级台阶,根据前面分析可知a3=4种万法。
②第一步迈二级台阶,还剩二级台阶,根据前面的分析可知有a2=2种迈法。
③第一步迈三级台阶,那么还剩一级台阶,还有a1=1种。
所以a4=a1+a2+a3=7(种)
相应有:
a5=a4+a2+a3=13(种)。
a6=a5+a4+a3=24(种)。
a7=a6+a5+a4=44(种)。
a8=a7+a6+a5=81(种)。
a9=a8+a7+a6=149(种)。
答:共有149种迈法。
分析:
首先从简单情况入手,若有1级台阶,则只有惟一的迈法,若有2级台阶,则有两种迈法,若有3级台阶,则有4种迈法,若有4级台阶,则按照第一步迈的级数分三类讨论:
①第一步迈一级台阶,那么还剩三级台阶,根据前面分析可知a3=4种万法。
②第一步迈二级台阶,还剩二级台阶,根据前面的分析可知有a2=2种迈法。
③第一步迈三级台阶,那么还剩一级台阶,还有a1=1种,然后依次求出a5、a6、a9。
算一下吧:
只用一步走:1+1+1+1+1+1+1+1+1=9, 有1种走法。
用了一次两步走:1+1+1+1+1+1+1+2=9, 有C8,1 =8种走法。
用了两次两步走:1+1+1+1+1+2+2=9, 有C7,2 =21 种走法。
用了三次两步走:1+1+1+2+2+2=9, 有C6,3=20 种走法。
用了四次两步走:1+2+2+2+2=9, 有C5,4=5种走法。
用了一次三步走:1+1+1+1+1+1+3=9, 有C7,1 =7种走法。
用了二次三步走:1+1+1+3+3=9, 有C5,2 =10种走法。
用了三次三步走:3+3+3=9, 有1种走法。
用了一次三步走+一次二步走:1+1+1+1+2+3=9, 有C6,1*C5,1 =30种走法。
用了一次三步走+二次二步走:1+1+2+2+3=9, 有C5,1*C4,2 =30种走法。
用了二次三步走+一次二步走:.1+2+3+3=9, 有C4,2*C3,1 =18种走法。
用了一次三步走+三次二步走:2+2+2+3=9, 有C4,1=4种走法。
加在一起:共155种走法。
def sum(num):
if num<=0:
return -1
if num==1:
return 1
if num==2:
return 2
if num==3:
return 4
if num>3:
return sum(num-1)+sum(num-2)+sum(num-3)
num=int(input())
sum=sum(num)
if sum==-1:
print("error")
else:
print("the sum of choices is %d"%sum)