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

#仅供本人知识归纳

相关推荐
ComputerInBook几秒前
代数基本概念理解——特征向量和特征值
人工智能·算法·机器学习·线性变换·特征值·特征向量
不能只会打代码10 分钟前
力扣--3433. 统计用户被提及情况
java·算法·leetcode·力扣
biter down44 分钟前
C++ 解决海量数据 TopK 问题:小根堆高效解法
c++·算法
用户6600676685391 小时前
斐波那契数列:从递归到缓存优化的极致拆解
前端·javascript·算法
初夏睡觉1 小时前
P1055 [NOIP 2008 普及组] ISBN 号码
算法·p1055
程芯带你刷C语言简单算法题1 小时前
Day28~实现strlen、strcpy、strncpy、strcat、strncat
c语言·c++·算法·c
踏浪无痕1 小时前
周末拆解:QLExpress 如何做到不编译就能执行?
后端·算法·架构
一个不知名程序员www1 小时前
算法学习入门--- 树(C++)
c++·算法
如竟没有火炬1 小时前
四数相加贰——哈希表
数据结构·python·算法·leetcode·散列表
背心2块钱包邮2 小时前
第9节——部分分式积分(Partial Fraction Decomposition)
人工智能·python·算法·机器学习·matplotlib