文章
10
粉丝
165
获赞
7
访问
26.4k
思路
其实就是走楼梯问题,设 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;
}
登录后发布评论
暂无评论,来抢沙发