完全背包主要代码解析

完全背包的状态转移方程:
在这里插入图片描述
代码解释:

  • 先说明一下,没有经过空间优化的DP数组是二维的,dp[i][j]表示遍历到前i个物品,且总的空间消耗为j时候的最大价值
  • 经过空间优化后,dp数组是一维的,dp[j]表示总的空间消耗为j时的最大价值
#include <bits/stdc++.h>
#define maxn 10005
#define maxv 10000005

using namespace std;

int V,n;
long long c[maxn];//第i种物品的空间花费
long long v[maxn];//第i种草药的价值
long long dp[maxv];

int main(){
    cin>>V>>n;//V是背包的体积,n是物品的数量
    for(int i=0;i<n;i++){
        cin>>c[i]>>v[i];
    }
    //虽然看起来难以理解,这样为什么就可以变成dp[i-1][j]和dp[i][j-c[i]]+v[i]之间的比较了呢?
    //是这样的,在第i次外循环中,相当于更新了一遍dp[i][j];然后在第i+1次循环中,就变成了对dp[i+1][j]的循环,对于dp[j]而言,由于在这次循环中,是第一次到达这个j值,所以它的值仍然是上一个i循环中的值,也就是dp[i][j];而对于dp[j-c[i]]而言,则是第二次访问这个值,也就是说在第i+1轮次的循环中已经更新过了,所以也就是dp[i+1][j-c[i]]
    for(int i=0;i<n;i++){
        for(int j=c[i];j<=V;j++){
            dp[j]=max(dp[j],dp[j-c[i]]+v[i]);
        }
    }
    printf("%lld",dp[V]);
}
已标记关键词 清除标记
相关推荐
<p> <b><span style="background-color:#FFE500;">【超实用课程内容】</span></b> </p> <p> <br /> </p> <p> <br /> </p> <p> 本课程内容包含讲解<span>解读Nginx的基础知识,</span><span>解读Nginx的核心知识、带领学员进行</span>高并发环境下的Nginx性能优化实战,让学生能够快速将所学融合到企业应用中。 </p> <p> <br /> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><br /> </b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b><span style="background-color:#FFE500;">【课程如何观看?】</span></b> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> PC端:<a href="https://edu.csdn.net/course/detail/26277"><span id="__kindeditor_bookmark_start_21__"></span></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a> </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 移动端:CSDN 学院APP(注意不是CSDN APP哦) </p> <p style="font-family:Helvetica;color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 本课程为录播课,课程永久有效观看时长,大家可以抓紧时间学习后一起讨论哦~ </p> <p style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <strong><span style="background-color:#FFE500;">【学员专享增值服务】</span></strong> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> <b>源码开放</b> </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 </p> <p class="ql-long-24357476" style="font-family:"color:#3A4151;font-size:14px;background-color:#FFFFFF;"> 下载方式:电脑登录<a href="https://edu.csdn.net/course/detail/26277"></a><a href="https://edu.csdn.net/course/detail/27216">https://edu.csdn.net/course/detail/27216</a>,播放页面右侧点击课件进行资料打包下载 </p> <p> <br /> </p> <p> <br /> </p> <p> <br /> </p>
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页