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

洛谷——P1048 [NOIP 2005 普及组] 采药

题目链接:洛谷——P1048 [NOIP 2005 普及组] 采药

经典01背包问题,也是左程云算法讲解073必备的第一题。本次提供两个版本代码。

递归+记忆化搜索

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;int dp[1005][105];
int maxValue(int t, int i, vector<int>& mt, vector<int>& mv);int main() {int T, M;cin >> T >> M;// T表示总时间, M表示草药数目vector<int> mt(M);vector<int> mv(M);for (int i = 0; i < M; ++i) {cin >> mt[i] >> mv[i];}memset(dp, -1, sizeof(dp));cout << maxValue(T, 0, mt, mv) << endl;return 0;
}// 返回在总时间还剩t时,选择[i, m - 1]号药材的最大值
int maxValue(int t, int i, vector<int>& mt, vector<int>& mv) {if (dp[t][i] != -1) {return dp[t][i];}if (i >= mt.size() || t <= 0) {dp[t][i] = 0;return 0;}if (t - mt[i] < 0) {dp[t][i] = maxValue(t, i + 1, mt, mv);return dp[t][i];}else {int res1 = maxValue(t - mt[i], i + 1, mt, mv) + mv[i];int res2 = maxValue(t, i + 1, mt, mv);dp[t][i] = max(res1, res2);return dp[t][i];}return -1;
}

动态规划

#include <iostream>
#include <vector>
#include <cstring>
using namespace std;int dp[1005][105];
int maxValue(int t, int i, vector<int>& mt, vector<int>& mv);int main() {int T, M;cin >> T >> M;// T表示总时间, M表示草药数目vector<int> mt(M);vector<int> mv(M);for (int i = 0; i < M; ++i) {cin >> mt[i] >> mv[i];}memset(dp, -1, sizeof(dp));//cout << maxValue(T, 0, mt, mv) << endl;for (int i = 0; i < M + 1; i++) {dp[0][i] = 0;}for (int i = 0; i < T + 1; ++i) {dp[i][M] = 0;}for (int i = M - 1; i >= 0; --i) {for (int t = 1; t < T + 1; ++t) {if (t < mt[i]) {dp[t][i] = dp[t][i + 1];}else {dp[t][i] = max(mv[i] + dp[t - mt[i]][i + 1], dp[t][i + 1]);}}}cout << dp[T][0] << endl;return 0;
}

参考图:

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

相关文章:

  • 在 macOS 上通过 Docker 部署DM8 (ARM 架构)
  • 关于Hugging Face【常见问题解决方案】
  • Linux网络编程 ---五种IO模型
  • 12.Redis 主从复制
  • LabVIEW驱动点阵实时控制系统
  • 力扣热题100----------141.环形链表
  • Spring MVC 九大组件源码深度剖析(一):MultipartResolver - 文件上传的幕后指挥官
  • 如何查看SoC线程的栈起始地址及大小
  • Mysql的MVCC是什么
  • 主成分分析法 PCA 是什么
  • 2、RabbitMQ的5种模式基本使用(Maven项目)
  • kafka 是一个怎样的系统?是消息队列(MQ)还是一个分布式流处理平台?
  • Linux常用命令分类总结
  • 井盖识别数据集-2,700张图片 道路巡检 智能城市
  • 本地环境vue与springboot联调
  • ThinkPHP 与 Vue.js 结合的全栈开发模式
  • 十八、Javaweb-day18-前端实战-登录
  • 《前端无障碍设计的深层逻辑与实践路径》
  • 【openlayers框架学习】十一:openlayers实战功能介绍与前端设计
  • K8S几种常见CNI深入比较
  • 企业自动化交互体系的技术架构与实现:从智能回复到自动评论—仙盟创梦IDE
  • ThinkPHP8学习篇(一):安装与配置
  • Go语言--语法基础7--函数定义与调用--自定义函数
  • Mysql深入学习:慢sql执行
  • Docker 国内可用镜像
  • ABP VNext + Quartz.NET vs Hangfire:灵活调度与任务管理
  • [嵌入式embed]C51单片机STC-ISP提示:正在检测目标单片机
  • 深度学习(鱼书)day10--与学习相关的技巧(后两节)
  • LWIP从FreeRTOS到uC/OS-III的适配性改动
  • 第六章第三节 TIM 输出比较