0
已解决
张恩泽
高级天翼
高级天翼
2752 爬楼梯 经验值:800
不许抄袭,一旦发现,直接清空经验!
题目描述 Description
小明和同学们顺利闯过了第二关,进入第三关的时候,小明和同学们发现了一个楼梯,可是有些楼梯坏了。智慧之门门主说,只要同学们通过这个楼梯就可以游玩里面的项目,可是同学们必须为我解决一个问题,这个时候大家都迫不及待的让智慧之门门主快点说问题。智慧之门门主指着面前的楼梯说,你可以一步一级,或一步二级,也可以一步三级,但是某些台阶是坏的,即脚不能踩在上面,哪位同学能求出登上最高台阶的总方案数。小明和同学在思考?
输入描述 Input Description
第一行两个整数,第一个数为楼梯总级数n(n<50),第二个数表示有几个坏台阶m
第二行连续m个整数为坏台阶的级数。注意:数据的规模在longint范围内。
输出描述 Output Description
一个整数,表示登上最高台阶的方案数
样例输入 Sample Input
7 2 4 6
样例输出 Sample Output
6
求大佬解答!!发一下思路和核心代码就可以了
0
已采纳
蔡乐毅
高级光能
高级光能
递推,if(f[i]不是坏台阶) f[i]=f[i-1]+f[i-2]+f[i-3];
边界:if(f[1]是坏台阶) f[1]=0,f[2]=0,f[3]=0;
else if(f[2]是坏台阶) f[1]=1,f[2]=0,f[3]=1;
else if(f[3]是坏台阶) f[1]=1,f[2]=1,f[3]=0;
else f[1]=1,f[2]=1,f[3]=2;
PS:
f要定义成全局变量;
判断坏台阶可以用bool型数组vis来判断,是坏台阶的为true,不是的为false
0