【LeetCode】70. 爬楼梯(动态规划--简单)

70. 爬楼梯

题目链接

在这里插入图片描述
dp思想:
dp[i]表示爬到i阶楼梯有dp[i]种方法
初始dp[0] = 0, dp[1] = 1, dp[2] = 2
递推关系式:dp[i] = dp[i-2] + dp[i-1]

#include<iostream>
using namespace std;

//dp思想
//dp[i]表示爬到i阶楼梯有dp[i]种方法
//初始dp[0] = 0, dp[1] = 1, dp[2] = 2
//递推关系式:dp[i] = dp[i-2] + dp[i-1] 

int climbStairs(int n)
{
	int *dp = new int[n+2];
	dp[0] = 0;
	dp[1] = 1;
	dp[2] = 2;
	for(int i=3;i<=n;i++)
		dp[i] = dp[i-2] + dp[i-1];
	return dp[n];
}

//优化
int climb_Stairs(int n)
{
	int dp[4];
	dp[0] = 0;
	dp[1] = 1;
	dp[2] = 2;
	for(int i=3;i<=n;i++)
	{
		dp[3] = dp[1] + dp[2];
		dp[1] = dp[2];
		dp[2] = dp[3];
	}
	if(n < 3)
		return dp[n];
	return dp[3];
}

int main()
{
	int n;
	cin>>n;
	cout<<climbStairs(n)<<endl;
	return 0;
}
发布了61 篇原创文章 · 获赞 45 · 访问量 6667

猜你喜欢

转载自blog.csdn.net/qq_38861587/article/details/105134816