文章

10

粉丝

165

获赞

7

访问

26.4k

头像
吃糖果 动态规划
P1197 北京大学上机题
发布于2023年2月8日 20:49
阅读数 3.6k

思路

其实就是走楼梯问题,设 dp[n] 为吃 n 块巧克力的方案,那要么最后剩两块一口气吃完或者最后剩一块一口气吃完,也就是 dp[n] = dp[n - 1] + dp[n - 2],初始值 dp[1] = 1,dp[2] = 2,因为太简单我就直接写 O(1) 空间复杂度的解法了。

#include<iostream>

using namespace std;

int main(){
    int n;
    while(cin >> n){
        int dp1 = 1, dp2 = 2;
        if(n <= 2) cout << n << endl;
        else {
            for(int i = 3; i <= n; i ++){
                int temp = dp1 + dp2;
                dp1 = dp2;
                dp2 = temp;
            }
            cout << dp2 << endl;
        }
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发