赞
踩
- 猴子爬山,一步可以爬1级也可以爬2级,从第0个台阶爬到第n个台阶,总共有多少种方案?
- 猴子爬山,一步可以爬1级也可以爬2级,从第0个台阶爬到第n个台阶共用了偶数步,总共有多少种方案?
- 猴子爬山,一步可以爬1级也可以爬2级,从第0个台阶爬到第n个台阶共用了奇数步,总共有多少种方案?
public static int sum(int n) {
if (n == 1) {
return 1;
}
int[] f = new int[n + 1];
f[1] = 1;
f[2] = 2;
for (int i = 3; i <= n; i++) {
f[i] = f[i - 1] + f[i - 2];
}
return f[n];
}
该代码的空间复杂度为O(n),可以降低空间复杂度。
以下这篇文章中有解决方案,此处不在介绍。
文章链接
public static int sum(int n) { if (n == 1) { return 0; } //f[n][0]表示偶数 f[n][1]表示奇数 int[][] f = new int[n + 1][2]; f[1][0] = 0; f[1][1] = 1; f[2][0] = 1; f[2][1] = 1; for (int i = 3; i <= n; i++) { //偶数 f[i][0] = f[i - 1][1] + f[i - 2][1]; //奇数 f[i][1] = f[i - 1][0] + f[i - 2][0]; } return f[n][0]; }
public static int sum(int n) { if (n == 1) { return 1; } //f[n][0]表示偶数 f[n][1]表示奇数 int[][] f = new int[n + 1][2]; f[1][0] = 0; f[1][1] = 1; f[2][0] = 1; f[2][1] = 1; for (int i = 3; i <= n; i++) { //偶数 f[i][0] = f[i - 1][1] + f[i - 2][1]; //奇数 f[i][1] = f[i - 1][0] + f[i - 2][0]; } return f[n][1]; }
读者若发现错误,请及时与笔者联系,万分感谢^ v ^ !!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。