/*
有n块石头分别在x轴的0,1,...,n-1位置,一致青蛙在石头0,想跳到石头n-1,如果青蛙
在第i块石头上,它最多可以向右跳距离ai,问青蛙能否跳到石头n-1?示例1:
Input:a=[2,3,1,1,4]
Output:True示例2:
Input:a=[3,2,1,0,4]
Output:False解题思路:
这道题是存在性动态规划,
1.确定状态
(1)最后一步:若青蛙能跳到最后一块石头n-1,这一步是从石头i过来的,则需要满足两个
条件:
-青蛙可以跳到石头i;
-最后一步不超过跳跃的最大距离:n-1-i<=ai
那么我们需要知道青蛙能不能跳到石头i(i<n-1),这是一个子问题,其状态为:F[j]表示青蛙
能不能跳到石头j;
2.转移方程
F[j]=OR(0<=i<j)(f[i]AND i+a[i]>=j)
OR代表只要一个满足,AND代表满足两个条件,其中o<=i<j表示枚举上一个跳到石头i,f[i]表示石头能不能跳到石头i,最后一步的距离不能
超过aj;
3.初始条件和边界情况
f[0]=true
4.计算顺序
f[1],f[2]....f[n-1],结果是f[n-1]*/
#include <iostream>
#include <vector>
using namespace std;class Solution{
public:Solution(vector<int>& _nums):nums(_nums){}bool JumpGame(){int n=nums.size();vector<bool> canJump(n);canJump[0]=true;/*初始化*/for(int j=1;j<n;j++){canJump[j]=false;/*以前的石头i*/for(int i=0;i<j;i++){if(canJump[i]&&j-i<=nums[i]){canJump[j]=true;break;}}}return canJump[n-1];}
private:vector<int> nums;
};int main(int argc,char* argv[]){vector<int> nums={2,3,1,0,4};Solution solu(nums);cout<<solu.JumpGame()<<endl;return 0;
}

LeetCode:青蛙跳石头游戏相关推荐

  1. Leetcode-403.Frog Jump(青蛙跳石头)

    今天的题目是:Leetcode 403-青蛙跳 A frog is crossing a river. The river is divided into x units and at each un ...

  2. 青蛙跳石头java_Java青蛙跳台阶问题的解决思路与代码

    问题描述 一只青蛙一次可以跳上1级台阶,也可以一次跳上2级台阶,请问跳上n级台阶,该请娃一共有多少种跳法? 解决思路 ①如果只有1级台阶,那显然只有一种跳法. ②如果有2级台阶,那么就有2种跳法,一种 ...

  3. 青蛙跳石头java_青蛙跳台阶(JAVA)与递归问题探究

    青蛙跳台阶JAVA 一只青蛙一次可以跳上一层台阶,也可以跳上两层,求该青蛙跳上n层的台阶总共有多少种跳法(先后次序不同算不同的结果). 思考:可以看出,每次青蛙出脚都会有两种可能,一步或者两步,再次出 ...

  4. 青蛙跳小游戏之python3解法

    青蛙跳小游戏是一个看似简单的智力游戏,游戏任务是让左右两边的青蛙互换位置.鼠标点击青蛙,它会跳到离它最近的一块空置的石头上.下图是游戏界面: 我在4399上也找到了这个小游戏,链接http://www ...

  5. 自制青蛙跳台阶小游戏~

    青蛙跳台阶小游戏 1.概念(concept)文档 楔子(Setting):千百年来,人们在贬低别人时,常用井底之蛙来描述那个人,但这却让青蛙不开心了,于是青蛙决定跳出井底,为自己讨一个公道. 玩法(G ...

  6. 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java

    <LeetCode力扣练习>剑指 Offer 10- II. 青蛙跳台阶问题 Java 一.资源 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总 ...

  7. 【LeetCode】剑指 Offer 10- II. 青蛙跳台阶问题

    [LeetCode]剑指 Offer 10- II. 青蛙跳台阶问题 文章目录 [LeetCode]剑指 Offer 10- II. 青蛙跳台阶问题 一.动态规划 总结 一.动态规划 class So ...

  8. leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划

    文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...

  9. LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题

    LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题 动态规划的思想,青蛙每次可以跳一个或两个台阶,要想得到最终青蛙跳n阶台阶的方法数,需要找到青蛙跳n-1个台阶的方法数和跳n-2个台 ...

最新文章

  1. 【SICP练习】84 练习2.56
  2. php代码优化 -- array_walk 和 foreach, for 的效率的比较
  3. GPU 内存的分级综述(gpu memory hierarchy)
  4. 数据结构(六)二叉树的遍历(递归非递归方法)
  5. C++数组动态分配空间国外玩家最关注的韩游
  6. PHP,mysql,Linux,CI框架学习总结
  7. Git pull(拉取),push(上传)命令整理
  8. windows中的hosts文件
  9. Revit2018下载和安装教程
  10. 倒计时21天,房贷利率新政要来了,有银行已率先公布报价
  11. 图片传输(APP端将图片传至服务器端存储)
  12. Python手写强化学习Q-learning算法玩井字棋
  13. Nape的回调系统 nape.callbacks
  14. jquerymobile-16 select menu
  15. 推荐系统三十六式(刑无刀)学习笔记(四)
  16. Linux SWAP 交换分区配置说明
  17. 外卖O2O公司为何能得到天价估值
  18. 电子电气架构车载网关系列——网关主要应用场景及相关要求
  19. MFC-490CW 清零正解
  20. 传感器CE测试认证检测要求

热门文章

  1. IOB, BIO, BIOES
  2. 我为什么说【直播电商】是第三代电商?
  3. python eel vue_张莽子—
  4. 谷歌chrome浏览器 - 关于插件,这一篇就够了
  5. r55600h和i511320h哪个好
  6. 舰r最新服务器,战舰少女R官方网站—战舰少女-与心爱的舰娘一起守护这片海域...
  7. 单点故障解决方案介绍smart link/monitor link /stp
  8. 华为android系统管理,安卓系统即将迎来封闭管理?华为首先发起,网友:流畅度更重要...
  9. 华为 Gauss数据库十问
  10. SharePoint站点图片轮转器imageRotator