这道题使用穷举的方式妥妥的超过时间限制,而使用动态规划则效率很高了。
主要可以这样理解,因为我们一次只能跨一步或两步,那么设走第i步有f(i)种方式,就有f(i) = f(i-1)+f(i-2)。
由于题干中说,n是我们走的步数,这就是一个斐波那契数列求第n项的问题。
int climbStairs(int n) {
int np,npp,i;
np = 1;
npp = 1;
i =0;
int n_c;
if(n<2){
return 1;
} else {
for(i=2;i<=n;i++){
np = np + npp;
npp = np - npp;
}
}
return np;
}