蓝桥杯-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])

#仅供本人知识归纳

相关推荐
Jerry1 小时前
LeetCode 189. 轮转数组
算法
Jerry2 小时前
LeetCode 739. 每日温度
算法
2601_954526756 小时前
【工业传感与算法实战】温漂补偿与零点抗漂破局:基于二阶多项式拟合的 C/C++ 边缘校准算法,深度拆解“压力变送器什么牌子好”的技术硬指标
c语言·c++·算法
叩码以求索7 小时前
浅谈:算法萌新如何高效刷题应对面试(一)
算法·面试·职场和发展
c238569 小时前
把 C++ 内存分配拆透:new 与 malloc 的三层血缘
开发语言·c++·算法
aaaameliaaa10 小时前
指针之总结
c语言·笔记·算法
宵时待雨10 小时前
优选算法专题9:哈希表
数据结构·算法·散列表
txzrxz10 小时前
最短路问题——Dijkstra 算法
数据结构·c++·算法·最短路·优先队列
gwf21610 小时前
磨损均衡算法(Wear Leveling)——SSD如何让每块闪存“公平退休“?
运维·数据库·人工智能·python·嵌入式硬件·算法·智能硬件
noipp10 小时前
推荐题目:洛谷 P6231 [JSOI2013] 公交系统
c语言·数据结构·c++·算法·游戏·洛谷·luogu