动态规划之上楼梯

案例一:有n级台阶,一个人每次上一级或者两级,问有多少种走完n级台阶的方法。为了防止溢出,请将结果Mod 1000000007

给定一个正整数int n,请返回一个数,代表上楼的方式数。保证n小于等于100000。
测试样例:
1
返回:1

暴力搜索法code

# -*- coding:utf-8 -*-
class GoUpstairs:
    def countWays(self, n):
        # write code here
        # 暴力搜索法
        res = 0
        if n==0:
            return 1
        if n<0:
            return 0
        else:
            res+=self.countWays(n-1)
            res+=self.countWays(n-2)
        return res


###运行结果:
您的代码已保存
答案错误:您提交的程序没有通过所有的测试用例
case通过率为11.76%

用例:
36196

对应输出应该为:

811714518

你的输出为:

maximum recursion depth exceeded

记忆搜索法code:

class GoUpstairs:
    def countWays(self, n):
        # write code here
        # 记忆搜索法
        dp = [0]*(n+1)
        res = 0
        if n==0:
            return 1
        if n<0:
            return 0
        else:
            if dp[n]!=0:
                if dp[n]!=-1:
                    return dp[n]
                else:
                    return 0
            else:
                res+=self.countWays(n-1)
                res+=self.countWays(n-2)
        if res==0:
            dp[n]=-1
        else:
            dp[n]=res
        return res

### 输出:
您的代码已保存
内存超限:您的程序使用了超过限制的内存
case通过率为0.00%

用空间换时间后发现超出内存范围

动态规划方法:

class GoUpstairs:
    def countWays(self, n):
        # write code here
        # 记忆搜索法
        dp = [0]*(n+1)
        dp[0]=1
        dp[1]=1
        for i in range(2,n+1):
            dp[i]=(dp[i-1]+dp[i-2])%1000000007
        return dp[n]
全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 12:11
我最近都有点不想活了,天天早10晚11的,还问我爱不爱她目前的状态别说爱谁了,没扇谁就不错了。是不是大家都是一进节子,只有工作没有爱情了
AzureSkies:在字节的时候找的就是字节的,飞书太适合恋爱人士了,能看到是不是已读,是不是在会议中。简直冥婚好伴侣
投递字节跳动等公司9个岗位
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务