递推式:f[i]f[i-1]+f[i-2]+f[i-3](i>3)
基本情况:f[0]1; f[1]1; f[2]2;
如果是坏台阶 清零专
代码<主程序属>
begin
readln(n,m);
for i:1 to m do begin read(a[i]); s[a[i]]:true; end; //s数组表示是否是坏台阶
f[0]:1; if s[1]false then f[1]:1; if s[2]false then f[2]:2;
for i:3 to n do
if s[i]false then f[i]:f[i-1]+f[i-2]+f[i-3];
writeln(f[n]);
end.