【dp】3531. 定西 题解

aspen138 edited 3 年,3 月前

n,k=map(int,input().split())
s=set()
if k!=0:
    a=list(map(int,input().split()))
    s=set(a)
dp=[0 for i in range(200)]
if 1 not in s:
    dp[1]=1
if 2 not in s:
    dp[2]=dp[1]+1
if 3 not in s:
    dp[3]=dp[2]+dp[1]+1
for i in range(4,n+1):
    if i not in s:
        dp[i]=dp[i-1]+dp[i-2]+dp[i-3]
    else:
        dp[i]=0
print(dp[n])

这好像还是18年研究生复试题目

直接扔代码了,值得注意的是:初始化边界条件的时候,也要考虑到Obstacle[]

Comments