我自己写的是贪心:
每一题都做,并且记录下能够做到这个题的时候之前的题的最大的得分。但是这样子有个问题。如果其中有一道题得分比较大,但是做到这道题的时候当前的得分超过了这道,这道题就会被跳过,而得分最高的情况是做这道题 + 后面的某一到题目。
我的做法是错的,错就错在会忽略后来居上的情形。

class Solution {public:long long mostPoints(vector<vector<int>>& questions) {if(questions.empty())return 0;long long MaxScore = 0;int m = questions.size();//int n = questions[0].size();map<int,long long> myMap;int maxIndex = 0;for(int i = 0;i < m;++i){long long score = 0;if(myMap.find(i) != myMap.end()){score = questions[i][0] + myMap[i];}else{score = questions[i][0];}if(score > MaxScore){MaxScore = score;maxIndex = i + questions[i][1]+1;}if(myMap.find(i + questions[i][1]+1) != myMap.end()){if(maxIndex < i + questions[i][1]+1)myMap[i + questions[i][1]+1] = max(myMap[i + questions[i][1]+1],MaxScore);else myMap[i + questions[i][1]+1] = max(myMap[i + questions[i][1]+1],score);}else if(i+questions[i][1]+1 < m){if(maxIndex < i+questions[i][1]+1 )myMap[i+questions[i][1]+1] = MaxScore;else myMap[i+questions[i][1]+1] = score;}}return MaxScore;}
};
//思路是每一题都做,并且做到某一题的时候查看做到这一题前的得分。

别人正确的做法:倒序dp

class Solution {public:long long mostPoints(vector<vector<int>> &questions) {int n = questions.size();vector<long long> f(n + 1);for (int i = n - 1; i >= 0; --i) {//倒叙遍历auto &q = questions[i];//获取当前遍历的数组int j = i + q[1] + 1;//根本就不关心这道题是否是从前面第几道题做过来的,只要做过来就行了f[i] = max(f[i + 1], q[0] + (j < n ? f[j] : 0));//当前这道题是做还是不做}return f[0];}
};作者:endlesscheng
链接:https://leetcode-cn.com/problems/solving-questions-with-brainpower/solution/dao-xu-dp-by-endlesscheng-2qkc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

正序 dp

class Solution {public:long long mostPoints(vector<vector<int>> &questions) {int n = questions.size();vector<long long> f(n + 1);for (int i = 0; i < n; ++i) {f[i + 1] = max(f[i + 1], f[i]);//对每一题,只有做这一题和不做这一题的区别auto &q = questions[i];int j = min(i + q[1] + 1, n);//计算下一题f[j] = max(f[j], f[i] + q[0]);//计算某一个可能被做到的题的最大得分。}return f[n];}
};作者:endlesscheng
链接:https://leetcode-cn.com/problems/solving-questions-with-brainpower/solution/dao-xu-dp-by-endlesscheng-2qkc/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

2022-1-24 Leetcode 2140.解决智力问题相关推荐

  1. LeetCode 2140. 解决智力问题(动态规划)

    文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二维整数数组 questions ,其中 questions[i] = [pointsi, brainpoweri] . 这个数 ...

  2. 2022.3.24 图论——拓扑排序算法

    文章目录 一.拓扑排序简介 二.例题 1.题目 2.分析 3.代码 一.拓扑排序简介 1.Topological Sorting,指的是一个DAG(Directed Acyclic Graph)即有向 ...

  3. JavaWeb 2022.9.24

    JavaWeb 2022.9.24 Java web 1.基本概念 1.1.前言 web开发 web,网页的意思 静态web heml.css 提供给所有人看的数据始终不会发生变化! 动态web 淘宝 ...

  4. H5在线CAD,网页CAD,MxDraw云图平台2022.08.24更新

    SDK开发包下载地址: MxDraw云图平台 2022.08.24更新_梦想CAD控件 1. 增加对像扩展数据功能 2. 增加CAD结合GIS使用功能 https://www.mxdraw3d.com ...

  5. PS 2022安装失败错误代码182解决办法

    Mac电脑安装PS 2022版失败,出现错误代码182怎么办?为大家带来安装PS 2022出现错误代码182的解决办法. 2022版本ps需要安装Adobe Creative Cloud,再运行安装包 ...

  6. Steema.TeeChart.NET Pro 4.2022.11.24 Crack

    Steema.TeeChart.NET --version 4.2022.11.24 许多数学指标.统计函数等 .NET 图表控件具有生成高级金融图表应用程序的功能.功能和指标包括:开盘-高-低-收盘 ...

  7. 2022年24和27英寸iMac更新计划

    iMac在2021年经历了一次重大的重新设计,苹果在4月份发布了五颜六色的新款24英寸iMac.然而,展望2022年,iMac仍然是人们关注的焦点.对于明年的iMac阵容,外媒认为苹果将会推出24英寸 ...

  8. 两年前端的2022:24岁、辗转三省、进入阿里

    前言 前排声明:文中主人公不是博主,另外本文只是一些朋友在工作.生活上的经历和琐碎,想看技术干货的掘友请止步,不要在本文上浪费你的学习时间~~~ 2022年,也实实在在满24岁了,毕业进入社会两年多, ...

  9. Adobe 2022软件安装错误代码107解决办法

    错误代码107是adobe系列安装过程中经常出现的一种错误类型,通常是Adobe安装文件不完整造成的,大多数情况下只要重新下载安装包就可以了.可Adobe 2022版本软件经过发现,当电脑中没有安装最 ...

最新文章

  1. java字体颜色编程_java Applet 程序设计讲解2 字体,颜色的使用
  2. 收留我接入云信,打造陌生人旅行社交
  3. iOS 正则表达式使用的三种方式语法
  4. Android Activity无法启动。
  5. 从Java程序员进阶为架构师,全套16张图概括最全技能!建议收藏!
  6. 小白学数据分析-----ARPDAU的价值
  7. 走进markdown
  8. C++ Licence认证用于项目开发和设备认证
  9. 获得当月时间chuo_擅用GTD时间管理法,远离焦虑情绪,让你的工作、学习井然有序...
  10. nginx做下载文件服务器
  11. outlook发邮件的服务器,outlook中要求写接收、发送邮件的服务器,应该怎样写?...
  12. Electron使用nodejs的坑,Can‘t resolve ‘child_process‘错误
  13. JavaScript中this的使用(四种情况下this的指向)
  14. 2021年安全生产模拟考试(全国特种作业操作证电工作业-继电保护模拟考试题库一)安考星
  15. Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C++)
  16. Blender建模笔记 | 大帅老猿threejs特训
  17. php开源 会员资料,会员详情/会员信息/用户信息
  18. 网线如何制作和如何使用?
  19. 乳腺癌诊断和药物技术行业调研报告 - 市场现状分析与发展前景预测
  20. 软件测试培训分享:软件测试自学能找到工作吗

热门文章

  1. 这三大科研工具,你都知道吗
  2. 河南地矿“牵手”中原云大数据 共建“地矿云”大数据平台
  3. Springboot 最简单的整合Dubbo框架实战案例
  4. 虚拟机新增多个硬盘,多个盘通过PV/VG/LV,最终做成文件系统
  5. discuz 手机版伪静态
  6. 基于ssm智能停车场车位管理系统
  7. 从阿里、腾讯到美团、优信,他们都注重……
  8. 【技术写作】怎样通过技术写作实现财富自由?
  9. “加息”道路越走越窄,小牛在线需主动自省求变
  10. CVX示例库之惩罚函数逼近