蓝桥杯 01背包

来源:互联网 发布:windows vue webpack 编辑:程序博客网 时间:2024/06/07 03:58

这里写图片描述

思路

动态规划基础题目。关于动态规划的详解点击这里。

代码

#include<iostream>#include<cstring>using namespace std;int max(int x,int y){    if(x>y) return x;    return y;}int main(){    //freopen("data.txt","r",stdin);    int n,m;    cin>>n>>m;//n件物品,最大容量m     int w[n+1],v[n+1];    for(int i=1;i<=n;i++){        cin>>w[i]>>v[i];    }    int dp[n+1][m+1];//dp[i][j]: 面对第i件物品且背包容量为j时的最大价值dp[i][j]     memset(dp,0,sizeof(dp));    //动态规划    for(int i=1;i<=n;i++){//第i件物品         for(int j=1;j<=m;j++){//最大容量j             if(w[i]<=j){//装得下                 dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);            }else{//装不下                 dp[i][j]=dp[i-1][j];            }        }    }    cout<<dp[n][m];     return 0;}