您的位置:首页 > 大数据 > 人工智能

Climbing Stairs

2015-06-10 08:58 387 查看
You are climbing a stair case. It takes n steps to reach to the top.

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

即求菲波拉契数列,第一次

public int climbStairs(int
n) {
int
ans = 1;
if (n == 1)
return ans;
if (n == 2)
return ans;
ans = climbStairs(n-1) + climbStairs(n-2);
return ans;
}
超时,需要用DP来解决。

public int climbStairs(int
n) {
int
ans = 1;
int current = 1,prev = 2;
if (n == 1)
return current;
if (n == 2)
return prev;
for (int
i = 2; i < n;
i++){
ans =
current + prev;
current =
prev;
prev =
ans;
}
return ans;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: