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

01背包-递推写法-建议序号不对齐

写法

之前习惯记忆递归写法,现在试一下直接递推:

序号不对齐,物品从1开始,f的第0行都是0. 这样好写一些

#include <cstdio>
#include <algorithm>
using namespace std;const int N = 1e3+5;
int v[N], w[N];
int n, vn;
int f[N][N];
int res = 0;int main() {scanf("%d %d", &n, &vn);for (int i = 1; i <= n; i++) {scanf("%d %d", &v[i], &w[i]);}// f[i][j], j体积下前i个物品的最大价值for (int i = 1; i <= n; i++) {for (int j = 0; j <= vn; j++) {if (j < v[i]) {f[i][j] = f[i-1][j];} else {f[i][j] = max(f[i-1][j], f[i-1][j-v[i]]+w[i]);}}}res = f[n][vn]; // 背包容量范围是[0, vn],所以要循环到vn,而关于物品是从1开始存的,范围是[1, n]printf("%d\n", res);
}

如果物品从0开始存,那么就要单独处理第一个物品:

#include <cstdio>
#include <algorithm>
using namespace std;const int N = 1e3+5;
int v[N], w[N];
int n, vn;
int f[N][N];
int res = 0;int main() {scanf("%d %d", &n, &vn);for (int i = 0; i < n; i++) {scanf("%d %d", &v[i], &w[i]);}// 数组从0开始,初始化0for (int j = 0; j <= vn; j++) {if (j < v[0]) {f[0][j] = 0;}else {f[0][j] = w[0];}}// i 第i个物品 j 剩余容量for (int i = 1; i < n; i++) {for (int j = 0; j <= vn; j++) {if (j < v[i]) {f[i][j] = f[i-1][j];} else {f[i][j] = max(f[i-1][j], f[i-1][j-v[i]]+w[i]);}}}printf("%d\n", f[n-1][vn]);
}

暂时也放到hot100里吧,挺重要的题。

http://www.jsqmd.com/news/594158/

相关文章:

  • 2024常州AI视频号推广全攻略:五大服务商深度测评与避坑指南 - 2026年企业推荐榜
  • 2025届学术党必备的五大降AI率方案横评
  • 2026长沙原木定制避坑指南:5家实力厂商深度测评与选择策略 - 2026年企业推荐榜
  • 程序内存管理:堆与栈的核心原理与应用
  • WebConsole:嵌入式轻量级Web控制台实现
  • 告别裸奔:给STM32F429阿波罗开发板的TouchGFX界面,加个FreeRTOS‘后台管家’
  • 嵌入式JPEG解码库JPEGDecoder深度解析
  • 2026防爆线圈采购指南:五大实力厂家全方位测评与性价比解析 - 2026年企业推荐榜
  • 从“中式英语”到地道表达:我用Notion搭建了一个动态写作原则库
  • RS485半双工通信库:DE/RE时序控制与静默期管理
  • 智慧校园软件怎么选?看懂这 5 个核心功能再决定不迟
  • 40亿条if语句挑战编程思维极限
  • STM32HAL库+FreeModbus实战:从CubeMX配置到485通信调试的保姆级避坑指南
  • Arduino I²C电子罗盘驱动库:NaviGuider Compass深度解析
  • 智慧校园厂家怎么选?看懂这 5 个核心功能再决定不迟
  • OpenClaw v2026.3.31 深度解读:为什么这次更新不是“小修小补”,而是一次明显的安全收口与后台任务体系成形
  • 2024年厦门废铝回收市场深度解析与核心服务商推荐指南 - 2026年企业推荐榜
  • MPU6050嵌入式驱动深度解析:寄存器配置、DMP融合与多平台HAL适配
  • 20251903 2025-2026-2 《网络攻防实践》实验三
  • 4564564
  • 电感器核心参数解析与工程应用指南
  • Rust 输出到命令行
  • 2026届最火的五大降AI率平台推荐榜单
  • 网络协议封神考点:TCP拥塞控制的4个步骤(慢启动+拥塞避免+快重传+快恢复)原理+流程图+详解
  • 【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
  • 基于 LangGraph 的 Agentic RAG 核心架构
  • 2024年无锡企业AI快手推广服务商深度测评与选择指南 - 2026年企业推荐榜
  • ​Problem - 2180D - Codeforces​
  • SingleWireDataBus:轻量级嵌入式单总线通信协议
  • 2025 年 11月 11日 - KB5068861(OS内部版本 26200.7171和 26100.7171)