题解 | #贪吃牛#

贪吃牛

https://www.nowcoder.com/practice/ae6261c872724fda8913b0377e85f6ab

一、知识点

动态规划、斐波那契数列

二、文字分析

1.定义数组元素的含义

定义数组dp[i]含义,表示这头牛吃完这i块草料有dp[i]种不同的方式。

2.确定决策并写出状态转移方程

假设我们已知吃完1~n-1块草料的不同的方式,如何求出吃完n块草料的方式?

由于一头牛一次只能吃1块或者2块草料。所以吃n块草料由两种方法得来,即吃完n-1块草料后在吃1块草料或吃完n-2块草料后吃两块草料。

得出状态转移方程:dp[n] = dp[n-1] + dp[n-2]

3.确定边界值

当n = 1或n = 2时,为状态转移方程的边界值。容易得出dp[1] = 1,dp[2] = 2。

三、编程语言

c++

四、编程代码

class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return int整型
     */
    int eatGrass(int n) {
        // write code here
        vector<int>dp(n + 1, 0);
        dp[1] = 1;
        dp[2] = 2;
        for (int i = 3; i <= n; i++) dp[i] = dp[i - 1] + dp[i - 2];
        return dp[n];
    }
};
全部评论

相关推荐

05-21 15:47
门头沟学院 Java
浪漫主义的虹夏:项目有亮点吗,第一个不是纯玩具项目吗,项目亮点里类似ThreadLocal,Redis储存说难听点是花几十分钟绝大部分人都能学会,第二个轮子项目也没体现出设计和技术,想实习先沉淀,好高骛远的自嗨只会害了自己
点赞 评论 收藏
分享
04-27 08:59
常州大学 Java
牛客139242382号:《两门以上汇编语言》
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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