栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

动态规划--简单题型之爬楼梯

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

动态规划--简单题型之爬楼梯

爬楼梯

假设你需要爬 n 个台阶才能到达楼顶,每次你可以爬 1 或 2 个台阶,那么有多少种不同的方法才能爬到楼顶呢 ?

分析

定义数组 dp[i] ,表示爬到第i层楼有 dp[i] 种方法。

数组dp[i] 从两个方向推导出来的:

  1. dp[i-1],上i-1层楼梯有dp[i-1]种方法,下一步上一个台阶就是dp[i];

  2. dp[i-2], 上i-2层楼梯有dp[i-2]种方法,下一步上两个台阶就是dp[i];

即dp[i] = dp[i-1]+dp[i-2]

代码实现
#include
using namespace std;
class Solution {
	public:
		int ClimbStairs(int n) {
			int dp[3];
			dp[1] = 1;
			dp[2] = 2;
			if (n < 3) return dp[n];
			for (int i = 3; i <= n; i++) {
				int sum = dp[1] + dp[2];
				dp[1] = dp[2];
				dp[2] = sum;
			}
			return dp[2];
		}	
};
int main() {
	Solution Q;
	int n;
	cin>>n;
	cout< 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/928472.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号