前言
之前入门算法用代码随想录(代码随想录),将递归,动态规划这些都学了一遍,也自己动手实现过,但之前也是边参考边写出来的,而且隔了有一段时间了,最近二刷一次!!这次挑战尽量自己写出来。
代码
public class _15_70_爬楼梯_完全背包 {
public static void main(String[] args) {
System.out.println(climbStairs(3));
}
/**
* 转换成完全背包问题 ,求排列
* dp[0] = 1,完全是因为递推公式而来,
*
* 先背包在物品,这样就能是排列的顺序
*/
public static int climbStairs(int n) {
//dp :装满j容量的大小一共有dp[j]种方法
int[] dp = new int[n+1];
dp[0] = 1;
for(int j = 1; j <= n; j++){
for(int i = 1; i <= 2; i++){
if(j-i >=0) {
dp[j] += dp[j - i];
}
}
}
return dp[n];
}
}