每天一道LeetCode-----找到有多少个组合加起来和是n,每个组合的数字只能是1或者2
2017-11-28 16:08
375 查看
Climbing Stairs
原题链接Climbing Stairs找到有多少个组合的和是给定的n,要求组合中的每个数字只能是1和2
动态规划即可
代码如下
class Solution { public: int climbStairs(int n) { vector<int> dp(n + 1); dp[0] = dp[1] = 1; /* 当前的位置只能由前一个位置移动一步,或者前前位置移动两步到达 */ /* dp[i]表示从开始达到i位置有多少种可能 */ for(int i = 2; i <= n; ++i) dp[i] = dp[i - 1] + dp[i - 2]; return dp ; } };
像这种每个当前状态由以前的状态决定(或者说当前状态决定之后的状态)的问题都可以用动态规划解决,不过需要分析动态规划数组应该表示什么。
相关文章推荐
- 每天一道LeetCode-----找到1,2,...,n这n个数所有的组合,每个组合有k个元素,且元素大小递增
- 每天一道LeetCode-----将数字集转成字母集,计算有多少种转换方式
- 每天一道LeetCode-----找到有多少条连续路径的和为给定值,路径不需要从根节点出发到达叶子节点
- 每天一道LeetCode-----一个整数序列,每个元素出现两次,只有一个(两个)出现一次,找到这个(这两个)元素
- 每天一道LeetCode-----比较两个字符串,每个字符串被若干'.'分成多个数字,一个个比较
- 给定候选号码(C)和目标号码(T)的集合,找出C中候选号码总和为T的所有唯一组合 C中的每个数字只能在组合中使用一次。
- 【leetcode】在一堆每个数字都出现三次的数组中,找到那个只出现一次的数(Single Number II)
- (循环语句)小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。(面试)
- leetcode17-根据数字找到可能的按键字母组合
- 小芳的妈妈每天给她2.5元钱,她都会存起来,但是,每当这一天是存钱的第5天或者5的倍数的话,她都会花去6元钱,请问,经过多少天,小芳才可以存到100元钱。
- 每天一道LeetCode-----将数字用字母表示(本质是26进制转换)
- 每天一道LeetCode-----找到序列中第一个没有出现的正整数,要求时间复杂度是O(n),空间复杂度是O(1)
- 每天一道LeetCode-----在字符串s中找到最短的包含字符串t中所有字符的子串,子串中字符顺序无要求且可以有其他字符
- 每天一道LeetCode-----计算字符串s中有多少个子序列和字符串t相等
- 每天一道LeetCode-----数组序列,每个元素的值表示最多可以向后跳多远,计算最少跳多少次可以到达末尾
- 每天一道LeetCode-----给定字符串s和字符数组words,在s中找到words出现的位置,words内部字符串顺序无要求
- 每天一道LeetCode-----找到所有被某个字符包围的另一个字符
- 每天一道LeetCode-----找到给定序列中所有和为某个值的集合或集合个数,序列中可以有/无重复项,集合元素顺序不同算不同集合等
- 每天一道LeetCode-----计算一个直方图空隙的容量(如果装水能装多少)
- 只能是字母或数字或者是字母和数字的组合的正则previousSibling