1、一个人上楼梯,他可以一步上1个台阶,2个台阶和3个台阶,共有n个台阶,输出所有他可能上台阶的方法
这是经典的台阶问题,解法就是转化为递推问题:
假设走完n个台阶,共有F(n)走法:
则: F(1) = 1;
F(2) = 2; 走法有:1、 1 , 1 2、2
F(3) = 4 走法有:1、 1, 1, 1 2、2, 1 3、1, 2 4、3
F(n) = F(n-1)+F(n-2)+F(n-3);
还有一个台阶问题:int count (int n) { if(n==1) return 1; if(n==2) return 2; if(n==3) return 3; else return count(n-1)+count(n-2)+count(n-3) }
2、一个寺庙有N个台阶,一个人站在下面,他要去到第M个台阶,假设他只有2个方案可以选择 1. 向上走3台阶 2. 向下走2个台阶。请问他到达第M个台阶最少要走多少步。给出核心算法并分析复杂度?
我还没想出答案,各位多多指教