蓝桥杯 经典算法题 求解01背包问题

题目:

题解:

本题是非常经典的dp问题,但是如果你是dp入门者dp小白我不建议直接一上来就学习01背包问题,我的建议是先学习leetcode动态规划(基础版)从头开始慢慢领悟这个路线更适合理解动态规划的本质。

小局部最优的策略是:选不选最后一个物品?使小局部的价值最大。

dp[i][j]代表选了i种物品重量为j的状态。

cpp 复制代码
#include <iostream>
using namespace std;
int main(){
  int w[1005]={0},v[1005]={0};
  int total,N;
  cin>>total>>N;
  for(int i=1;i<=N;i++)cin>>w[i]>>v[i];
  int dp[1005][1005]={0};
  for(int i=1;i<=N;i++){
    for(int j=1;j<=total;j++){
      dp[i][j]=dp[i-1][j];
      if(j>=w[i])dp[i][j]=max(dp[i][j],dp[i-1][j-w[i]]+v[i]);
    }
  }
  cout<<dp[N][total];
  return 0;
}
相关推荐
We་ct4 分钟前
LeetCode 39. 组合总和:DFS回溯解法详解
前端·算法·leetcode·typescript·深度优先·个人开发·回溯
小杍随笔5 分钟前
【Rust中所有符号的作用及使用场景详解】
java·算法·rust
MicroTech20259 分钟前
微算法科技(NASDAQ: MLGO)探索量子机器学习算法在预测模型中的应用,利用量子核方法提升复杂模式识别能力
科技·算法·机器学习
absunique1 小时前
算法设计模式看编程思维的抽象能力的技术6
算法·设计模式
DeepModel2 小时前
【概率分布】Beta分布详解
算法·概率论
我命由我123452 小时前
React - 验证 Diffing 算法、key 的作用
javascript·算法·react.js·前端框架·html·html5·js
Eward-an6 小时前
LeetCode 1980 题通关指南|3种解法拆解“找唯一未出现二进制串”问题,附Python最优解实现
python·算法·leetcode
程序员酥皮蛋6 小时前
hot 100 第四十题 40.二叉树的层序遍历
数据结构·算法·leetcode
木斯佳7 小时前
HarmonyOS 6实战:从爆款vlog探究鸿蒙智能体提取关键帧算法
算法·华为·harmonyos
Mr.朱鹏8 小时前
JVM-GC垃圾回收案例
java·jvm·spring boot·算法·spring·spring cloud·java-ee