leetcode动态规划--基础题
跳跃游戏 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 思路 根据题目意思,最大跳跃距离,说明可以跳0--nums[i]的距离 可以把跳跃看成走nums[i]步,如果能走到下一位置则可以 加油 获取更多的步数(nums[j]步),但是不能累加 那么只需扫一遍nums数组,更新剩余能跳的距离(注意不能累加,只能取最大!) 到终点之前判断是否有剩余步骤即可 代码 class Solution { public: bool canJump(vector<int>& nums) { if(nums.size()==0)return false; int cur=nums[0]; for(int i=1;i<nums.size();++i){ if(cur<=0){ return false; } cur--; cur=std::max(cur,nums[i]); } return true; } }; 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。 问总共有多少条不同的路径? 思路 当前位置可以来自上方或者左边 令dp[i][j