蓝桥杯 试题 算法训练 进击的青蛙(C++)

C++实现青蛙过河问题 采用二分法解决青蛙过河问题。青蛙可以从左岸跳到右岸,在左岸有一石柱L,面积只容得下一只青蛙落脚,同样右岸也有一石柱R,面积也只容得下一只青蛙落脚。有一队青蛙从尺寸上一个比一个小。 立即下载

题目浏览

资源限制
时间限制:1.0s 内存限制:256.0MB

问题描述
  青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N。桥上的一些点有一些石子,这些点是无法跳上去的。青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端的总方法数。如果无法到达,请输出”No Way!"
  
输入格式
  输入数据共N行。

第一行一个数字N,代表桥的长度。

接下来N行,表示从点1~N的道路情况,每行一个数字0或1,1表示有石子。
  
输出格式
  输出一行,为一个整数,代表方法数,无法到达为“No Way!"
  由于数据过大,我们只需要求出 对 1000000007 的余数即可
  
样例输入
5
1
0
0
1
0

样例输出
3

数据规模和约定
  N <= 10^6

算法浏览

#include<iostream>

using namespace std;

const int N = 1000010, mod = 1000000007;

int n;
bool nums[N];
int dp[N];

int main()
{
    cin >> n;
    for(int i = 1; i <= n; i++)
    {
        int temp;
        scanf("%d", &temp);
        if(temp) nums[i] = true;
    }
    dp[0] = 1;
    for(int i = 1; i <= n; i++)
        if(nums[i] != true){
            if(i - 1 >= 0)
                dp[i] = (dp[i] + dp[i - 1]) % mod;
            if(i - 2 >= 0)
                dp[i] = (dp[i] + dp[i - 2]) % mod;
            if(i - 3 >= 0)
                dp[i] = (dp[i] + dp[i - 3]) % mod;
        }
    if(dp[n] == 0) cout << "No Way!" << endl;
    else cout << dp[n] << endl;
    return 0;
}

核心思路

线性dp问题

可以类比为爬楼梯

骄傲的青蛙flash动画 骄傲的青蛙flash动画是一款幼儿故事课件骄傲的青蛙动画素材下载。 立即下载

相关推荐

设计的多实例引用(Multiple Instances of a Design Reference)

一、什么是“设计的多实例引用” 在层次化的设计中,我们经常会将一个module例化多份,这些例化的instance就是设计的module的多实例引用。 二、为什么要解决多实例引用 三、怎么解决多实例引用 ...

kevindas的博客 3719

试题 算法训练 进击的青蛙

试题 算法训练 进击的青蛙 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述   青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N。桥上的一些点有一些石子,这些点是无法跳上去的。青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端的总方法数。如果无法到达,请输出”No Way!" 输入格式   输入数据共N行。 第一行一个数字N,代表桥的长度。 接下来N行,表示从点1~N的道路情况,每行一个数字0或1,1表示有石子。 输出格式   输出一行,为一

qq_51917627的博客 1261

别再手动调波形了!用STM32G474的HRTIM+DAC生成精密锯齿波,附完整CubeMX配置

本文详细介绍了如何利用STM32G474的高分辨率定时器(HRTIM)和数模转换器(DAC)协同工作,实现高精度锯齿波生成。通过CubeMX配置指南、关键寄存器计算和实践技巧,帮助开发者快速掌握全硬件实现的波形生成方案,显著提升嵌入式系统的波形控制精度和响应速度。

weixin_28716769的博客 246

剑指offer(8)&(9)——C++实现青蛙跳台阶

题目 正常跳:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 变态跳:一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 考察点 斐波那契数列参考剑指offer(7) 递归的理解 数学建模的能力 解题思路 正常跳: 只有一个台阶时,只有一种跳法:n=1,...

fengwenpei的博客 1357

哨兵一号burst数据的下载和处理

在Sentinel - 1数据处理领域,其基本流程起始于从(ASF)下载原始压缩文件。这些文件规模颇为可观,常规大小约4GB,而部分数据的原文件甚至已攀升至7GB,对存储空间提出了严苛要求。从影像构成来看,每景Sentinel - 1影像由三个干涉宽幅(IW)模式子带组成,每个IW一般包含9个脉冲串(burst)。然而,在实际研究中,我们所关注的研究区域往往仅占据其中寥寥几个burst。

kangkangluoluo的博客 1965

浅谈天线 - - - GNSS/BT/4G/2.4G

全球定位导航系统,最成熟的就是美利坚,我大中华,俄罗斯,还有就是欧洲的一个(太次不谈)所以我们在项目调试的时候,小尺寸的陶瓷天线上一般兼容2个频段,体积大一点的可以兼容三个频段,采用组合的形式 GPS+BD GPS+GLONASS GLONASS+BD 或者是单频段的定位天线陶瓷PATC陶瓷片:陶瓷片面积越大,介电常数越大,其共振频率越高,接收效果越高,这就是为什么都推荐使用大一点的陶瓷天线的原因银层:陶瓷天线表面的银层可以影响天线的共振频率,理想的GNSS陶瓷片频点准确落在1575.42MH

BLACKHOLE6的博客 1万+

蓝桥杯2022省赛C++A组 F题 青蛙过河 题解

蓝桥杯2022省赛C++A组 F题 青蛙过河 题解

rank的成长之路 7097

SAP 财务快速记账之--科目分配模型(Account assignment model )

SAP FICO 运维解决方案

lijinbao171022的博客 1772

“蓝桥杯”练习系统试题集,题解答案(C/C++)

基础练习 BASIC-1 闰年判断 #include&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; using namespace std; bool f(int x){ if(x%4==0&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;a

薛崇祥的博客 7570

游戏引擎揭秘:大厂为何死磕自研?

游戏引擎本质与商业价值解析 游戏引擎是集成了渲染、物理、动画等核心功能的开发工具包,其价值在于让开发者免于重复编写底层代码,专注于游戏内容创作。商业引擎(如Unity/Unreal)虽降低了开发门槛,但头部厂商仍坚持自研引擎,主要基于以下考量: 经济性:长期项目分摊自研成本后,比商业引擎分成更划算; 可控性:完全掌握底层代码,能针对性优化核心玩法需求; 技术壁垒:专属引擎成为厂商的竞争优势,如米哈游的跨平台渲染技术; 项目适配:超大型游戏(开放世界/MMO)需要深度定制解决方案。 这种"短期高投入

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 263

汽车OTA 测试用例

汽车OTA 测试用例

天赐好车的博客 976

蓝桥杯题库题解合集(C/C++实现)

文章目录二、基础练习BASIC-1 闰年判断BASIC-2 01字串BASIC-3 字母图形BASIC-4 数列特征BASIC-5 查找整数BASIC-6 杨辉三角形BASIC-7 特殊的数字BASIC-8 回文数BASIC-9 特殊回文数BASIC-10 十进制转十六进制BASIC-11 十六进制转十进制BASIC-12 十六进制转八进制BASIC-13 数列排序二、算法训练ALGO-1 区间k...

薛崇祥的博客 5481

华为非AI方向0603笔试真题-爆破小游戏(详细思路+多语言题解)

华为非AI方向0603笔试第二题【爆破小游戏】,提供详细思路讲解以及代码实现。

qq_45776114的博客 358

第十七届蓝桥杯国赛C++ B组 个人题解+考场思路复盘及备赛经验

蓝桥杯国赛个人题解+考场思路复盘及备赛经验

2401_87563614的博客 761

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

《剑指offer》面试题10:题目3青蛙变态跳台阶(C++实现)

《剑指offer》面试题10:题目2扩展青蛙变态跳台阶(C++实现))题目描述题目分析分析思路1:青蛙对每级台阶可选择过或者不过分析思路2:数学归纳法证明解决思路思路一:循环实现2的正整数次幂思路二:用位操作执行更快小结参考文献 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 题目分析 分析思路1:青蛙对每级台阶可选择过或者...

weixin_43850408的博客 692

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

面试题10- II. 青蛙跳台阶问题

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n级的台阶总共有多少种跳法。 答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 示例 1: 输入:n = 2 输出:2 示例 2: 输入:n = 7 输出:21 提示: 0 <= n <= 100 来源:力扣(LeetCode) 链接:https://...

weixin_42348049的博客 201

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

青蛙过河

Time Limit:1000 msMemory Limit:65536 KiB SubmitStatistic Problem Description 1)一条小溪尺寸不大,青蛙可以从左岸跳到右岸,在左岸有一石柱L,石柱L面积只容得下一只青蛙落脚,同样右岸也有一石柱R,石柱R面积也只容得下一只青蛙落脚。 2)有一队青蛙从小到大编号:1,2,…,n。 3)初始时:青蛙只能趴在左岸的石...

°渐行渐远っ的博客 1380

蓝桥杯-进击的青蛙

蓝桥杯

m0_66113251的博客 279

算法:动态规划-青蛙过桥(痛扁自己)

一座长度为n的桥,起点的一端坐标为0,且在整数坐标i处有a[i]个石头【0<=a[i]<=4】, 一只青蛙从坐标0处开始起跳,一步可以跳的距离为1或2或3【即每一步都会落在整数点处】, 青蛙落在i处会踩着该点的所有石头,求青蛙跳出这座桥最少踩多少个石头?

bensonrachel的博客 3813

青蛙过桥 (逆序dp字典序)

问题重述 一座长度为n的桥,起点的一端坐标为0,且在整数坐标i处有a[i]个石头【0<=a[i]<=4】, 一只青蛙从坐标0处开始起跳,一步可以跳的距离为1或2或3【即每一步都会落在整数点处】, 青蛙落在i处会踩着该点的所有石头,求青蛙跳出这座桥最少踩多少个石头?并且输出依次跳 过的坐标点路线,如果存在多种路线,输出字典序最小的那一条。 思路 正序dp无法输出字典序 代码 #include<iostream> #include<string.h> #include<

weixin_46271002的博客 715

回溯法

7-1 青蛙过桥 (25 分) 一座长度为n的桥,起点的一端坐标为0,且在整数坐标i处有a[i]个石头【0<=a[i]<=4】, 一只青蛙从坐标0处开始起跳,一步可以跳的距离为1或2或3【即每一步都会落在整数点处】, 青蛙落在i处会踩着该点的所有石头,求青蛙跳出这座桥最少踩多少个石头?并且输出依次跳 过的坐标点路线,如果存在多种路线,输出字典序最小的那一条。 输入格式: 第一行整数n(<150000),接着下一行会有n+1个由空格隔开的整数,即桥上各个坐标处石头数量。 输出格式: 第一行为

qq_43400374的博客 1322

痛自己扛,泪自己擦。

其实,我很累了. 其实,一直没有人能够懂我,我习惯了假装坚强,习惯了一个人面对所有.... 我不知道自己到底想怎样. 有时候. 我可以很开心的和每个人说话,可以很放肆的. 可是没有人知道那不过是伪装,很刻意的伪装. 我可以让自己很快乐很快乐. 可是却找不到快乐的源泉,只会让

gaofengliang01的专栏 526

蓝桥杯练习系统(算法训练)ALGO-965 进击的青蛙

青蛙X正准备跳过一座桥,这座桥被划分为N段,记青蛙所在的起始点为0,桥的末端为N。桥上的一些点有一些石子,这些点是无法跳上去的。青蛙每次跳跃能向前跳跃+1,+2,+3段,现在请你算出跳到末端的总方法数。内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s。接下来N行,表示从点1~N的道路情况,每行一个数字0或1,1表示有石子。输出一行,为一个整数,代表方法数,无法到达为“No Way!第一行一个数字N,代表桥的长度。

m0_73801775的博客 402

青蛙跳C++(递归和动态规划)

1.青蛙跳:一只青蛙一次可以跳上1阶台阶,也可以跳上2阶台阶,求该青蛙跳上一个n阶台阶总共多少中跳法: 首先,如果假设有n个台阶,那么青蛙可能从(n-2)跳两个台阶上去,也可以从(n-1)跳一个台阶上去,就很类似斐波那契求和,f(n)=f(n-2)(从0上到n-2台阶的方法数)+f(n-1)(从0上到n-1台阶的方法数),就是递归思想: #include"bits/stdc++.h" using namespace std; int cnt = 0;//计算递归次数 int recursion(i

weixin_55667695的博客 3271
上一篇: 蓝桥杯 试题 算法提高 最大区间和(C++)
下一篇: 整数划分问题 动态规划解决 (C++)
ghost_him
博客等级 码龄6年 598粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值