2022-1-24 Leetcode 2140.解决智力问题
我自己写的是贪心:
每一题都做,并且记录下能够做到这个题的时候之前的题的最大的得分。但是这样子有个问题。如果其中有一道题得分比较大,但是做到这道题的时候当前的得分超过了这道,这道题就会被跳过,而得分最高的情况是做这道题 + 后面的某一到题目。
我的做法是错的,错就错在会忽略后来居上的情形。
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.解决智力问题相关推荐
- LeetCode 2140. 解决智力问题(动态规划)
文章目录 1. 题目 2. 解题 1. 题目 给你一个下标从 0 开始的二维整数数组 questions ,其中 questions[i] = [pointsi, brainpoweri] . 这个数 ...
- 2022.3.24 图论——拓扑排序算法
文章目录 一.拓扑排序简介 二.例题 1.题目 2.分析 3.代码 一.拓扑排序简介 1.Topological Sorting,指的是一个DAG(Directed Acyclic Graph)即有向 ...
- JavaWeb 2022.9.24
JavaWeb 2022.9.24 Java web 1.基本概念 1.1.前言 web开发 web,网页的意思 静态web heml.css 提供给所有人看的数据始终不会发生变化! 动态web 淘宝 ...
- H5在线CAD,网页CAD,MxDraw云图平台2022.08.24更新
SDK开发包下载地址: MxDraw云图平台 2022.08.24更新_梦想CAD控件 1. 增加对像扩展数据功能 2. 增加CAD结合GIS使用功能 https://www.mxdraw3d.com ...
- PS 2022安装失败错误代码182解决办法
Mac电脑安装PS 2022版失败,出现错误代码182怎么办?为大家带来安装PS 2022出现错误代码182的解决办法. 2022版本ps需要安装Adobe Creative Cloud,再运行安装包 ...
- Steema.TeeChart.NET Pro 4.2022.11.24 Crack
Steema.TeeChart.NET --version 4.2022.11.24 许多数学指标.统计函数等 .NET 图表控件具有生成高级金融图表应用程序的功能.功能和指标包括:开盘-高-低-收盘 ...
- 2022年24和27英寸iMac更新计划
iMac在2021年经历了一次重大的重新设计,苹果在4月份发布了五颜六色的新款24英寸iMac.然而,展望2022年,iMac仍然是人们关注的焦点.对于明年的iMac阵容,外媒认为苹果将会推出24英寸 ...
- 两年前端的2022:24岁、辗转三省、进入阿里
前言 前排声明:文中主人公不是博主,另外本文只是一些朋友在工作.生活上的经历和琐碎,想看技术干货的掘友请止步,不要在本文上浪费你的学习时间~~~ 2022年,也实实在在满24岁了,毕业进入社会两年多, ...
- Adobe 2022软件安装错误代码107解决办法
错误代码107是adobe系列安装过程中经常出现的一种错误类型,通常是Adobe安装文件不完整造成的,大多数情况下只要重新下载安装包就可以了.可Adobe 2022版本软件经过发现,当电脑中没有安装最 ...
最新文章
- java字体颜色编程_java Applet 程序设计讲解2 字体,颜色的使用
- 收留我接入云信,打造陌生人旅行社交
- iOS 正则表达式使用的三种方式语法
- Android Activity无法启动。
- 从Java程序员进阶为架构师,全套16张图概括最全技能!建议收藏!
- 小白学数据分析-----ARPDAU的价值
- 走进markdown
- C++ Licence认证用于项目开发和设备认证
- 获得当月时间chuo_擅用GTD时间管理法,远离焦虑情绪,让你的工作、学习井然有序...
- nginx做下载文件服务器
- outlook发邮件的服务器,outlook中要求写接收、发送邮件的服务器,应该怎样写?...
- Electron使用nodejs的坑,Can‘t resolve ‘child_process‘错误
- JavaScript中this的使用(四种情况下this的指向)
- 2021年安全生产模拟考试(全国特种作业操作证电工作业-继电保护模拟考试题库一)安考星
- Baumer工业相机堡盟工业相机如何联合BGAPISDK和佳能EF变焦镜头实现相机的自动变焦(C++)
- Blender建模笔记 | 大帅老猿threejs特训
- php开源 会员资料,会员详情/会员信息/用户信息
- 网线如何制作和如何使用?
- 乳腺癌诊断和药物技术行业调研报告 - 市场现状分析与发展前景预测
- 软件测试培训分享:软件测试自学能找到工作吗