标签:
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?
[Solution]
Dynamic programming: fibonacci数列
f[n] = f[n-1] + f[n-2]
1 int climbStairs(int n) 2 { 3 if (n <= 0) 4 return n == 0 ? 1 : -1; 5 int *table = new int[n + 1], steps = 0; 6 7 table[0] = table[1] = 1; 8 for (int i = 2; i <= n; i++) 9 table[i] = table[i - 1] + table[i - 2]; 10 11 steps = table[n]; 12 delete[] table; 13 14 return steps; 15 }
标签:
原文地址:http://www.cnblogs.com/ym65536/p/4311675.html