文章目录

  • 1. 题目
  • 2. 解题

1. 题目

给你一个下标从 0 开始的二维整数数组 questions ,其中 questions[i] = [pointsi, brainpoweri]

这个数组表示一场考试里的一系列题目,你需要 按顺序 (也就是从问题 0 开始依次解决),针对每个问题选择 解决 或者 跳过 操作。
解决问题 i 将让你 获得 pointsi 的分数,但是你将 无法 解决接下来的 brainpoweri 个问题(即只能跳过接下来的 brainpoweri 个问题)。
如果你跳过问题 i ,你可以对下一个问题决定使用哪种操作。

比方说,给你 questions = [[3, 2], [4, 3], [4, 4], [2, 5]] :
如果问题 0 被解决了, 那么你可以获得 3 分,但你不能解决问题 1 和 2 。
如果你跳过问题 0 ,且解决问题 1 ,你将获得 4 分但是不能解决问题 2 和 3 。
请你返回这场考试里你能获得的 最高 分数。

示例 1:
输入:questions = [[3,2],[4,3],[4,4],[2,5]]
输出:5
解释:解决问题 0 和 3 得到最高分。
- 解决问题 0 :获得 3 分,但接下来 2 个问题都不能解决。
- 不能解决问题 1 和 2
- 解决问题 3 :获得 2 分
总得分为:3 + 2 = 5 。没有别的办法获得 5 分或者多于 5 分。示例 2:
输入:questions = [[1,1],[2,2],[3,3],[4,4],[5,5]]
输出:7
解释:解决问题 1 和 4 得到最高分。
- 跳过问题 0
- 解决问题 1 :获得 2 分,但接下来 2 个问题都不能解决。
- 不能解决问题 2 和 3
- 解决问题 4 :获得 5 分
总得分为:2 + 5 = 7 。没有别的办法获得 7 分或者多于 7 分。提示:
1 <= questions.length <= 10^5
questions[i].length == 2
1 <= pointsi, brainpoweri <= 10^5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/solving-questions-with-brainpower
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dp[i] 表示 遍历完 [i : n-1] 的元素后的 最高得分
  • 当再 增加一个 元素 i-1 时,不取,则得分为 dp[i]
  • 取的话,跳过的元素个数 x,则得分为 dp[x+1]+point[i-1]
  • 两种情况取较大的
class Solution {public:long long mostPoints(vector<vector<int>>& questions) {int n = questions.size();vector<long long> dp(n);dp[n-1] = questions[n-1][0];for(int i = n-2; i >= 0; --i){dp[i] = max(dp[i+1], ((i+questions[i][1]+1<n) ? dp[i+questions[i][1]+1] : 0LL)+questions[i][0]);}return dp[0];}
};

312 ms 112.6 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!

LeetCode 2140. 解决智力问题(动态规划)相关推荐

  1. 2022-1-24 Leetcode 2140.解决智力问题

    我自己写的是贪心: 每一题都做,并且记录下能够做到这个题的时候之前的题的最大的得分.但是这样子有个问题.如果其中有一道题得分比较大,但是做到这道题的时候当前的得分超过了这道,这道题就会被跳过,而得分最 ...

  2. 八十五、Python | Leetcode数据结构之图和动态规划算法系列

    @Author:Runsen @Date:2020/7/7 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  3. 笔试题:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。该题有三种解法:递归的方法求解斐波那契数列、用概率与统计的数学方法解决,3.动态规划

    笔试题 一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶.求该青蛙跳上一个 n 级的台阶总共有多少种跳法.该题有三种解法:1.递归的方法求解斐波那契数列.2.用概率与统计的数学方法解决,3.动态规划 ...

  4. 【leetcode刷题笔记】动态规划

    #[leetcode刷题笔记]动态规划 石子游戏 public boolean stoneGame(int[] piles) {int N = piles.length;// dp[i][j] is ...

  5. 【LeetCode】LeetCode之打家劫舍Ⅱ——暴力递归+动态规划解决循环问题+DP空间优化

    这道题和第 198 题相似,建议读者首先阅读「198. 打家劫舍」

  6. LeetCode 542. 01 Matrix--C++解法--动态规划

    LeetCode 542. 01 Matrix–C++解法–动态规划 LeetCode题解专栏:LeetCode题解 LeetCode 所有题目总结:LeetCode 所有题目总结 大部分题目C++, ...

  7. [leetcode] 72. 编辑距离(二维动态规划)

    72. 编辑距离 再次验证leetcode的评判机有问题啊!同样的代码,第一次提交超时,第二次提交就通过了! 此题用动态规划解决. 这题一开始还真难到我了,琢磨半天没有思路.于是乎去了网上喵了下题解看 ...

  8. [LeetCode]Longest Palindromic Substring题解(动态规划)

    Longest Palindromic Substring: Given a string s, find the longest palindromic substring in s. You ma ...

  9. LeetCode Partition Equal Subset Sum(动态规划)

    问题:给出一个数组,问是否可以分成两个子集,其和相等 思路:首先要求数组和是偶数,然后用动态规划来求. 用dp(i,j)表示第i步时和为j是否可行,则有dp(i,j)= dp(i-1,j) || dp ...

最新文章

  1. Weblogic 前端热部署
  2. 关于GDPR的六大理解
  3. Spring MVC 的 异常处理
  4. Unix环境高级编程—进程关系
  5. 知识付费为何从一个“圈粉”的事业变成一个“骗粉”的勾当?
  6. 二叉树的创建和遍历-C语言实现
  7. 参会者说丨LiveVideoStackCon 2019上海 音视频技术大会
  8. 嵌入式Linux系统基础知识
  9. 一流企业都在做数据治理,还用百万年薪招人,想做的无非这10点
  10. python3.6.5安装tensorflow_Win10下用Anaconda安装TensorFlow(图文教程)
  11. Kafka是什么、主要应用在什么场景?
  12. 三维重建笔记_重建方法简介与汇总
  13. 阿里云 MSE 微服务治理发布企业版
  14. 为何腾讯一直在推广“低配版”的QQ
  15. 发电机机房设计规范_柴油发电机的容量选择,以及柴油发电机机房设计规范要求!...
  16. 从年薪1万到年薪100万的日子
  17. 从零开始编写minecraft光影包(7)基础水面绘制
  18. 论文中出现的 cf. i.e. s.t. e.g. w.r.t. et al. etc等英文缩写是什么意思
  19. 「PAT乙级真题解析」Basic Level 1033 旧键盘打字 (问题分析+完整步骤+伪代码描述+提交通过代码)
  20. HTML进阶--段落标签P --------16岁的小前端

热门文章

  1. 局域网网络风暴检测工具_【思唯网络学院】从原理到配置,最全的VLAN说明就在这了!...
  2. python的各种推导式(列表推导式、字典推导式、集合推导式)
  3. buidulbs android.jar,在将AS项目迁移到IDEA时,无法将com.android.bui...
  4. 【读书笔记】【独立思考】2018-04-03(1)
  5. RobotFramework自动化测试框架的基础关键字(五)
  6. 这本轻小说真厉害 2016
  7. 【Maven入门教程】Maven的基本概念
  8. hdu 1505 City Game
  9. Google C++编程风格指南(一):背景
  10. js在类的方法中访问自己的属性