Python版本描述
显然,偶数台阶的跳法数等于之前所有奇数台阶的跳法数之和;
奇数台阶的跳法数等于之前所有偶数台阶的跳法数之和
故:
class Solution:
def solve(self , n , m , a ):
mask = a[::-1]
wmatrix = [0 for i in range(n+1)]
wmatrix[0] = 1
for i in range(1,n+1):
if mask and i == mask[-1]:
wmatrix[i] = 0
mask.pop()
else:
if i%2==0:
#注:偶数台阶的跳法数等于之前所有奇数台阶的跳法数之和
wmatrix[i] = sum(wmatrix[1:i:2]) % (1e9+7)
else:
#注:奇数台阶的跳法数等于之前所有偶数台阶的跳法数之和
wmatrix[i] = sum(wmatrix[0:i:2]) % (1e9+7)
return wmatrix[-1] % (1e9+7)
京公网安备 11010502036488号