LeetCode 70 爬楼梯

题目: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

示例 1:

输入:n = 2
输出:2
解释:有两种方法可以爬到楼顶。
1 阶 + 1 阶
2 阶

示例 2:

输入:n = 3
输出:3
解释:有三种方法可以爬到楼顶。
1 阶 + 1 阶 + 1 阶
1 阶 + 2 阶
2 阶 + 1 阶

思路:

1.确定dp数组以及下标的含义
dp[i]: 爬到第i层楼梯,有dp[i]种方法
2.递推公式
dp[i] = dp[i - 1] + dp[i - 2]
3.dp数组初始化
dp[1] = 1;
dp[2] = 2;
4.遍历顺序
从前往后
5.推导dp[i]数组
也可以打印

class Solution {
public:
	int fun(int n) {
		if (n <= 1)return n;
		vector<int> dp(n+1);
		dp[1] = 1;
		dp[2] = 2;
		for (int i = 3; i <= n;i++) {
			dp[i] = dp[i - 1] + dp[i - 2];
		}
		return dp[n];
	}
};

int main() {
	Solution ss;
	cout << ss.fun(3) << endl;
	return 0;
}

你可能感兴趣的:(leetcode,算法,动态规划)