LeetCode:青蛙跳石头游戏
/*
有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:青蛙跳石头游戏相关推荐
- Leetcode-403.Frog Jump(青蛙跳石头)
今天的题目是:Leetcode 403-青蛙跳 A frog is crossing a river. The river is divided into x units and at each un ...
- 青蛙跳石头java_Java青蛙跳台阶问题的解决思路与代码
问题描述 一只青蛙一次可以跳上1级台阶,也可以一次跳上2级台阶,请问跳上n级台阶,该请娃一共有多少种跳法? 解决思路 ①如果只有1级台阶,那显然只有一种跳法. ②如果有2级台阶,那么就有2种跳法,一种 ...
- 青蛙跳石头java_青蛙跳台阶(JAVA)与递归问题探究
青蛙跳台阶JAVA 一只青蛙一次可以跳上一层台阶,也可以跳上两层,求该青蛙跳上n层的台阶总共有多少种跳法(先后次序不同算不同的结果). 思考:可以看出,每次青蛙出脚都会有两种可能,一步或者两步,再次出 ...
- 青蛙跳小游戏之python3解法
青蛙跳小游戏是一个看似简单的智力游戏,游戏任务是让左右两边的青蛙互换位置.鼠标点击青蛙,它会跳到离它最近的一块空置的石头上.下图是游戏界面: 我在4399上也找到了这个小游戏,链接http://www ...
- 自制青蛙跳台阶小游戏~
青蛙跳台阶小游戏 1.概念(concept)文档 楔子(Setting):千百年来,人们在贬低别人时,常用井底之蛙来描述那个人,但这却让青蛙不开心了,于是青蛙决定跳出井底,为自己讨一个公道. 玩法(G ...
- 《LeetCode力扣练习》剑指 Offer 10- II. 青蛙跳台阶问题 Java
<LeetCode力扣练习>剑指 Offer 10- II. 青蛙跳台阶问题 Java 一.资源 题目: 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总 ...
- 【LeetCode】剑指 Offer 10- II. 青蛙跳台阶问题
[LeetCode]剑指 Offer 10- II. 青蛙跳台阶问题 文章目录 [LeetCode]剑指 Offer 10- II. 青蛙跳台阶问题 一.动态规划 总结 一.动态规划 class So ...
- leetcode面试题46. 把数字翻译成字符串/典型的青蛙跳台阶题目(递归),动态规划
文章目录 题目 基本思想 题目 给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 "a" ,1 翻译成 "b",--,11 翻译成 "l&q ...
- LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题
LeetCode刷题剑指 Offer 10- II. 青蛙跳台阶问题 动态规划的思想,青蛙每次可以跳一个或两个台阶,要想得到最终青蛙跳n阶台阶的方法数,需要找到青蛙跳n-1个台阶的方法数和跳n-2个台 ...
最新文章
- 【SICP练习】84 练习2.56
- php代码优化 -- array_walk 和 foreach, for 的效率的比较
- GPU 内存的分级综述(gpu memory hierarchy)
- 数据结构(六)二叉树的遍历(递归非递归方法)
- C++数组动态分配空间国外玩家最关注的韩游
- PHP,mysql,Linux,CI框架学习总结
- Git pull(拉取),push(上传)命令整理
- windows中的hosts文件
- Revit2018下载和安装教程
- 倒计时21天,房贷利率新政要来了,有银行已率先公布报价
- 图片传输(APP端将图片传至服务器端存储)
- Python手写强化学习Q-learning算法玩井字棋
- Nape的回调系统 nape.callbacks
- jquerymobile-16 select menu
- 推荐系统三十六式(刑无刀)学习笔记(四)
- Linux SWAP 交换分区配置说明
- 外卖O2O公司为何能得到天价估值
- 电子电气架构车载网关系列——网关主要应用场景及相关要求
- MFC-490CW 清零正解
- 传感器CE测试认证检测要求
热门文章
- IOB, BIO, BIOES
- 我为什么说【直播电商】是第三代电商?
- python eel vue_张莽子—
- 谷歌chrome浏览器 - 关于插件,这一篇就够了
- r55600h和i511320h哪个好
- 舰r最新服务器,战舰少女R官方网站—战舰少女-与心爱的舰娘一起守护这片海域...
- 单点故障解决方案介绍smart link/monitor link /stp
- 华为android系统管理,安卓系统即将迎来封闭管理?华为首先发起,网友:流畅度更重要...
- 华为 Gauss数据库十问
- SharePoint站点图片轮转器imageRotator