当前位置: 首页 > news >正文

3180. 执行操作可获得的最大总奖励 I

力扣刷题记录

dp 回溯

3180. 执行操作可获得的最大总奖励 I

思路

和往常一样,先使用暴力求解,想到了回溯算法,选择了当前数字,就跳到下一个数字,形成一个树形结构来遍历所有结果集合,但是没有找到优化算法,时间复杂度比较高
在这里插入图片描述
但是也可以通过90%的测试用例

没办法,只能思考动态规划的问题,没有想出来,查看题解
首先对数组进行排序
定义动态数组 dp[2 * max] , max表示最大的奖励数字
dp数组记录值为0或1,表示该下标的值是否能够被取到

最大的奖励数不可能超过2 * max,因此遍历奖励数组,当前值为x时,倒序k遍历 2 * x - 1到x,判断dp[k - x]是否可以取到,如果可以取到,那么dp[k]也可以达到,标记为1

最后遍历dp数组找到最大值即可

代码

var res int = 0func backTracking(rewardValues []int, curReward int, pos int){if curReward > res{res = curReward}if pos >= len(rewardValues){return}for i := pos; i < len(rewardValues); i++{if curReward < rewardValues[i]{curReward += rewardValues[i]backTracking(rewardValues, curReward, i + 1)curReward -= rewardValues[i]}}
}func maxTotalReward(rewardValues []int) int {sort.Ints(rewardValues)// res = 0// backTracking(rewardValues, 0, 0)max := rewardValues[len(rewardValues) - 1]dp := make([]int, 2 * max)dp[0] = 1for _, x := range rewardValues{for k := 2 * x - 1 ; k >= x ; k --{// k 表示能到达的最大总奖励if dp[k-x] == 1{dp[k] = 1}}}for i, val := range dp{if val == 1{res = i}}return res
}

不考虑排序算法的情况下
时间复杂度:O(n*max)
空间复杂度:O(max)

http://www.lryc.cn/news/468476.html

相关文章:

  • react18中的jsx 底层渲染机制相关原理
  • Spring Boot 实现文件上传下载功能
  • ArcGIS 10.8 安装教程(含安装包)
  • 【小白学机器学习16】 概率论的世界观2: 从正态分布去认识世界
  • Python 爬虫项目实战:爬取某云热歌榜歌曲
  • HCIP-HarmonyOS Application Developer 习题(十八)
  • 操作系统学习笔记2.3互斥
  • LLM - 使用 Neo4j 可视化 GraphRAG 构建的 知识图谱(KG) 教程
  • Linux 环境的搭建方式->远程登录->免密登录
  • react18中的计算属性及useMemo的性能优化技巧
  • Python 实现高效的 SM4 大文件加密解密实战指南20241024
  • 数据结构~红黑树
  • 【ROS GitHub使用】
  • 批量处理文件权限:解决‘/usr/bin/chmod: Argument list too long’的有效方法
  • 数据结构——树——二叉树——大小堆
  • Android Junit 单元测试 | 依赖配置和编译报错解决
  • ffmpeg视频滤镜: 裁剪-crop
  • 身份证归属地查询接口-在线身份证归属地查询-身份证归属地查询API
  • ESP32 S3 怎么开发基于ESP-RTC的音视频实时交互的应用,用语AI陪伴的领域
  • 车载测试分享:UDS诊断、ECU刷写、CAN一致性测试、网络通讯测试、CANoe使用、报文解析、问题定位分析
  • 预算不够,怎么跟KOL砍价?(内附砍价模板)
  • C#从零开始学习(GameObject实例)(unity Lab3)
  • 谷歌地图 | 与 Android 版导航 SDK 集成的最佳实践
  • 什么是 VolTE 中的 Slient Redial?它和 CSFB 什么关系?
  • docker 部署单节点的etcd以及 常用使用命令
  • 华为开放式耳机测评,南卡 、华为、Cleer开放式耳机超深度横评
  • 【Power Query】List.Select 筛选列表
  • Spring--4
  • django celery 定时任务 Crontab 计划格式
  • 动态应用程序安全测试 (DAST) 工具 Fortify WebInspect