破损的楼梯

2024-03-26 00:12
文章标签 破损 楼梯

本文主要是介绍破损的楼梯,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述
分析:

也就是说,每一次步长是 1或2,如果a[i]是破损的楼梯的话,那么不能走。
所要解决的问题是,到达楼顶的方案数对1e9+7取模。
到达每一个楼梯 i 的前提是 要么从 i-1 或 i-2 的位置上来的,如果 i 的位置的值=0,则表示是坏的。
可以有状态 dp[i] 表示走到第 i 层楼梯的方案数。
所以,dp[i]=dp[i-1]+dp[i-2]
用 dp 数组来记录走动第 i 层的方案数。

示例代码:

#include<bits/stdc++.h>
using namespace std;
using ll = long long;
const ll p = 1e9+7;
const ll N = 1e5+5;
ll dp[N],a[N];
int main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);int n,m;cin>>n>>m;for(int i=1;i<=m;i++){int nm;cin>>nm;a[nm]=1;}// dp[i] = dp[i-1] +dp[i-2]dp[0]=1;if(!a[1])dp[1]=1;for(int i=2;i<=n;i++){if(a[i])continue;//dp[i]=0dp[i]=(dp[i-1]+dp[i-2])%p;}cout<<dp[n];return 0;
}

注意:

for(int i=2;i<=n;i++){if(a[i])continue;//dp[i]=0dp[i]=dp[i-1]+dp[i-2];
}
cout<<dp[n]%p;//这样写只能过10%的案例,因为结果很大,导致最后取模出现问题,所以要计算一次,取模一次

这篇关于破损的楼梯的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/846709

相关文章

[数据集][目标检测]井盖丢失未盖破损检测数据集VOC+YOLO格式2890张5类别

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2890 标注数量(xml文件个数):2890 标注数量(txt文件个数):2890 标注类别数:5 标注类别名称:["broke","circle","good","lose","uncovered"] 每个类别标

基于yolov8的包装盒纸板破损缺陷测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的包装盒纸板破损缺陷检测系统是一种高效、智能的解决方案,旨在提高生产线上包装盒纸板的质量检测效率与准确性。该系统利用YOLOv8这一前沿的深度学习模型,通过其强大的目标检测能力,能够实时识别并标记出包装盒纸板上的各种破损缺陷,如划痕、撕裂、孔洞等。 在系统中,首先需对包含破损缺陷的包装盒纸板图像进行数据采集和标注,形成训练数据集。随后,利用这些数据进行模型训练,使

SDUT2876_走楼梯(大数)

走楼梯 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 小虎发现走楼梯的时候一次上一个台阶比较惬意,一次上两个台阶比较高效,一次上三个台阶就很累人。 小虎是一个即注重质量又注重高效的人,于是他就在上楼梯的时候每步就只跨上一个台阶或两个台阶, 现在小虎想知道他这样上n阶的楼梯一共有多少种走法,但

[数据集][目标检测]管道漏水泄漏破损检测数据集VOC+YOLO格式2614张4类

数据集格式:Pascal VOC格式+YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2614 标注数量(xml文件个数):2614 标注数量(txt文件个数):2614 标注类别数:4 标注类别名称:["crack","leak","no leak","water"] 每个类别标注的框数: crac

九度OJ-1205:N阶楼梯上楼问题

典型的顺推求解。使用循环即可。 debug记录: ①最开始使用int buf[]存储,导致数据溢出WA。后改用long long解决 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90)。 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼

走楼梯 递归 动态规划

<span style="font-size:18px;">/*** * @author admin* 一个楼梯有20级,每次走一级或两级,从底走到顶,一共有多少种走法* 递归 动态规划*/public class Floor {public static void main(String[] args) {int n=20;System.out.println(computer(n));

九度oj-1205-N阶楼梯上楼问题

时间限制:1 秒 内存限制:128 兆 特殊判题:否 提交:3743 解决:1472 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归) 输入: 输入包括一个整数N,(1<=N<90)。 输出: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数。 样例输入: 4 样例输出:

航电ACM [hdu-2041] 超级楼梯

超级楼梯 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 28141    Accepted Submission(s): 14536 Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级

有关于递归函数的一些学习记录(Recursion)走楼梯,递归找出最两个数的大公约数,汉诺塔问题

递归函数的定义是指在函数执行的过程中,在函数体中直接或间接的调用了自己,这样的函数就是递归函数。递归函数的使用使得分而制之(Divide and Conquer)的思想得意实现,并在解决循环和一些复杂的求解问题中显示了很好的作用。 问题一:说,一个人在爬一个楼梯时,一次可以走一个台阶也可以走两个台阶,问这个人走到第九个台阶有多少种走法? 这是我在2013年春参加南京大学计