算法9:"变态"跳台阶

#题目:变态跳台阶(出题的人就是个变态,人家这是牛人)->一次可以跳任意台阶数,如一次跳1个台阶,2个台阶,3个台阶。。。
#因此,如果我们想要这个"变态"跳到第n个台阶的话,它有:
#"变态"跳到台阶1的跳法+"变态"跳到台阶2的跳法+"变态"跳到台阶3的跳法+...+ "变态"跳到台阶n-1的跳法 + 1(变态直接从0跳到n)
#这里的"变态"跳到1,跳到2,跳到3...的跳法,指的是它第一步跳到这里,第二步直接跳到台阶n,所以跳法总数是其跳到台阶1,台阶2,台阶3...的和

#而"变态"跳到台阶1的跳法 = 变态跳到台阶1的跳法(1:它能从台阶0跳来)
#"变态"跳到台阶2的跳法 = 变态跳到台阶2的跳法(2:它能从台阶0,台阶1跳来)
#同理,"变态"跳到台阶3的跳法 = 变态跳到台阶3的跳法(1(跳到台阶1) + 2(跳到台阶2) + 1(直接跳到3):它能从0,1,2三个台阶上跳来) 
#因此,我们从"变态"它从哪来来,可以直接得到跳到台阶n的跳法数 = 跳到1 + 跳到2 + ... + 跳到n-1 + 1
import numpy as np


def JumpSteps(target):
    #定义全是1的数组的意义是它代表着直接跳到n这里的一种方法
    steps = np.ones(target)
    for i in range(1,target):
        #计算跳到n的跳法
        for j in range(0,i):
            steps[i] += steps[j]
    print("跳到各个台阶分别对应的跳法数如下所示:")
    print(steps)
    #将我们需要的跳到的目标台阶target所对应的跳法数返回
    #因为索引从0开始,索引目标数据在steps[target-1]
    print("其中跳到第"+str(target)+"台阶对应跳法数是:")
    return steps[target-1]


print("计算我们跳到第五个台阶有多少种跳法:")
print(int(JumpSteps(5)))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值