1. 初级爬台阶 - 求最短步数

LC - 70

一次可以迈1-2个台阶,因此最短步数与前两个台阶有关。

Initial state: 第一阶:1步 ; 第二阶:1步

deduction function: f[n] = f[n - 1] + f[n - 2];

====可以推出,第三阶可以从第一阶迈出,可以从第二阶迈出,因此有两种可能。基本就是斐波那契数列求和。

public int climbStairs(int n) {
if(n == 0) return 1;
if(n == 1) return 1; int[] dp = new int[n];
dp[0] = 1;
dp[1] = 2; for(int i = 0 ; i < n - 2 ; i++){
dp[i + 2] = dp[i] + dp[i + 1];
} return dp[n - 1];
}

2. 求最短开销

LC - 746

每个台阶的cost不同,还是只能迈1-2个台阶,这回求到顶点的最小开销。

Initial state: 2个台阶以内最小开销为cost[0], cost[1]中的最小值。0->1->dist or 0->2->dist

deduction function: f[n] = Math.min(dp[n - 1], dp[n - 2]) + cost[n]

====> 因为可以从n-1阶跳,也可以从n-2阶跳,选开销最小的台阶。

====>注意:可以从n->dist,n-1->dist,两个点都是有效的,因此结果选两个点中最小的。

public int minCostClimbingStairs(int[] cost) {
int len = cost.length;
if(len == 0) return cost[0];
if(len == 1) return Math.min(cost[0], cost[1]); int[] dp = new int[len]; dp[0] = cost[0];
dp[1] = cost[1]; for(int i = 2 ; i < len ; i++){
dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];
} return Math.min(dp[len - 1], dp[len - 2]);
}

3. 1的进阶版

步数是2的幂。求有多少种组合。

因此:f[n] = f[n - 1] + f[n - 2] + f[n - 4] + ... + f[1]

public static int countSteps(int n) {
int[] dp = new int[n + 1];
dp[0] = 1; for(int i = 0 ; i < n ; i++) {
if(i == 0 || i == 1) dp[i + 1] = i + 1;
else {
int j = 0, tmp = 0;
while(Math.pow(2, j) <= i + 1) {
tmp += dp[(int) (i + 1 - Math.pow(2, j))];
j++;
}
dp[i + 1] = tmp;
}
}
System.out.println(Arrays.toString(dp));
return dp[n];
}

莽就对了。。。

DP爬台阶问题的更多相关文章

  1. 70. Climbing Stairs(动态规划 爬台阶,一次只能爬1,2两节)

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  2. LeetCode OJ:Climbing Stairs(攀爬台阶)

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  3. 九度 1547 出入栈(递推DP)

    题目描述: 给定一个初始为空的栈,和n个操作组成的操作序列,每个操作只可能是出栈或者入栈.要求在操作序列的执行过程中不会出现非法的操作,即不会在空栈时执行出栈操作,同时保证当操作序列完成后,栈恰好为一 ...

  4. LeetCode-70-Climbing Stairs

    You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...

  5. SDOI 2019 R1游记

    $SDOI$ $2019$ $R1$游记 昨天才刚回来,今天就来写游记啦! Day -5: 做了一下去年省选的Day1,感觉很神仙. Day -4: 做了一下去年省选的Day2,感觉还是很神仙. Da ...

  6. 【leetcode】70-ClimbingStairs

    problem ClimbingStairs 题意: 爬台阶问题,每次可以爬1个或者两个台阶,问如果有n个台阶,可以有多少种方法爬到顶部? 解析: 对于n=1,有一种方法:n=2,有两种方法: 对于n ...

  7. 面试10大算法汇总——Java篇

    问题导读 1 字符串和数组 2 链表 3 树 4 图 5 排序 6 递归 vs 迭代 7 动态规划 8 位操作 9 概率问题 10 排列组合 11 其他 -- 寻找规律 英文版 以下从Java角度解释 ...

  8. 刷题70. Climbing Stairs

    一.题目说明 题目70. Climbing Stairs,爬台阶(楼梯),一次可以爬1.2个台阶,n层的台阶有几种爬法.难度是Easy! 二.我的解答 类似的题目做过,问题就变得非常简单.首先用递归方 ...

  9. 收藏一部山地车教学视频,Fabien Barel主讲及动作示范

    视频是由曾多次获得UCI速降赛的冠军车手Fabien Barel主讲及动作示范,讲解山地车越野的装备以及基本动作.视频中的要点说明我已经手录为文本,如果视频中没有看清的地方,也可以看文字. 骑行装备 ...

随机推荐

  1. 《nginx - 基本操作/配置》

    一:基本操作 - 开启 Nginx nginx -c nginx.conf -  Nginx 的平滑重启 kill -HUP nginx主进程号(平滑重启) -  停止 Nginx * Kill -Q ...

  2. 苹果审核被拒,解析奔溃日志.txt转crash文件

    1. 桌面新建一个文件夹,用来存放crash相关的东西.取名crash 2.下载苹果官方邮件里给的后缀名为 .txt 的被拒附件(这三个txt格式文件为苹果返回的崩溃日志文件),把这三个文件放在刚新建 ...

  3. 高性能Nginx服务器-负载均衡

    Location正则表达式 location的作用 location指令的作用是根据用户请求的URI来执行不同的应用,也就是根据用户请求的网站URL进行匹配,匹配成功即进行相关的操作. locatio ...

  4. Jmeter使用之-断言

    添加响应断言 ,一般下面这样选择断言的设置就可以了 个人习惯是直接从响应数据中直接复制正确的接口返回值到断言的测试模式中,如下          !!!但是这样复制的是有问题的 ,需要在测试模式中去掉 ...

  5. Nginx、Tomcat配置https

    一.Nginx.Tomcat配置https 前提就是已经得到了CA机构颁发的证书 一.合并证书 1.假设证书文件如下 秘钥文件server.key,证书CACertificate-INTERMEDIA ...

  6. [JavaScript] Frequently used method or solutions for issues

    Get the file name from the file path Solution: var fileName = fullPath.replace(/^.*[\\\/]/, ''); // ...

  7. Cocos Creator cc.Event点击触摸事件详解

    cc.Event事件请不要直接创建 cc.Event 对象,因为它是一个抽象类,请创建 cc.Event.EventCustom 对象来进行派发. cc.Class({extends: cc.Comp ...

  8. vue 之iview

    iView-admin2.0:https://admin.iviewui.com/ 组件:https://www.iviewui.com/docs/guide/install

  9. Jumpserver(跳板机、堡垒机)启动jms Django连接mysql数据库报错

    解决办法 根据报错信息 , 去查看官方手册 在settings.py文件夹加入DATABASES['OPTIONS']['init_command'] = "SET sql_mode='ST ...

  10. Vue系列之 => 命名视图实现经典布局

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...