蓝桥杯-python-破损的楼梯(dp)

问题描述

小蓝来到了一座高耸的楼梯前,楼梯共有 N 级台阶,从第 0 级台阶出发。小蓝每次可以迈上上级或2级台阶,但是,楼梯上的第 a1级、第a2 级、第 a3 级,以此类推,共 级台阶的台阶面已经坏了,不能踩上去。

现在,小蓝想要到达楼梯的顶端,也就是第 N 级台阶,但他不能踩到坏了的台阶上,请问他有多少种不踩坏了的台阶到达顶端的方案数?

由于方案数很大,请输出其对 109+7取模的结果。

输入格式

第一行包含两个正整数 N(1≤ N≤ 10°)和 M(0≤ M≤N),表示楼梯的总级数和坏了的台阶数。
接下来一行,包含 M 个正整数 a」,Q2,·..,am(1 ≤ al < a2 <a3 < aM ≤ N),表示坏掉的台阶的编号

输出格式

输出一个整数,表示小蓝到达楼梯顶端的方案数,对109+7取模。

python 复制代码
n,M=map(int,input().split())
Bad=list(map(int,input().split()))
dp = [0]*(n+1)
vis = [0]*(n+1)

for x in Bad:
   vis[x]=1


dp[0]=1
dp[1]=1-vis[1]

for i in range(2,n+1):
    if vis[1] == 1:
        continue
    dp[i]=(dp[i-1]+dp[i-2])%1000000007
print(dp[n])

#仅供本人知识归纳

相关推荐
老鱼说AI3 分钟前
大规模并发处理器程序设计(PMPP)讲解(CUDA架构):第四期:计算架构与调度
c语言·深度学习·算法·架构·cuda
月落归舟7 分钟前
帮你从算法的角度来认识数组------( 二 )
数据结构·算法·数组
阿贵---22 分钟前
C++中的RAII技术深入
开发语言·c++·算法
NAGNIP30 分钟前
面试官:深度学习中经典的优化算法都有哪些?
算法
PiKaMouse.1 小时前
navigation2-humble从零带读笔记第一篇:nav2_core
c++·算法·机器人
木井巳1 小时前
【递归算法】子集
java·算法·leetcode·决策树·深度优先
lightqjx1 小时前
【算法】二分算法
c++·算法·leetcode·二分算法·二分模板
ic爱吃蓝莓2 小时前
数据结构 | HashMap原理
数据结构·学习·算法·链表·哈希算法
add45a2 小时前
C++编译期数据结构
开发语言·c++·算法
2401_891482173 小时前
C++模块化编程指南
开发语言·c++·算法