假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
int climbStairs(int n) {
int a = 1, b = 1;
while (n--)
{b=b+a;
a=b-a;//主要是这两句怎么理解?
}
return a;
}
谢谢
假设你正在爬楼梯,需要n步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶部?
int climbStairs(int n) {
int a = 1, b = 1;
while (n--)
{b=b+a;
a=b-a;//主要是这两句怎么理解?
}
return a;
}
谢谢
这不就是fn = f(n - 1) + f(n -2) 的形式吗?
找规律就行啦,你多写几层的结果就会发现规律。
硬要说是算法的话,可以往dp上靠一靠