第六十一天 01背包

01背包的解决

#include 
using namespace std;
 
const int N=1010;
int v[N],w[N];//v[N]物品重量,w[N]物品价值
int f[N][N];//表示当前状态
int n,m;
 
int main()
{
  scanf("%d%d",&n,&m);
  
  for(int i=1;i<=n;i++) scanf("%d%d",&v[i],&w[i]);
  
  for(int i=1;i<=n;i++)
    for(int j=1;j<=m;j++)
    {
      f[i][j]=f[i-1][j];//在不含i物品的基础上的价值
      if(j>=v[i]) f[i][j]=max(f[i][j],f[i-1][j-v[i]]+w[i]);//含i且不超过背包容量
    }    
 
  printf("%d",f[n][m]); 
  return 0;
}

就这样吧,今天狂补学校留的实验,夯实了一下基础。

睡觉,明儿还得我做饭,早点睡。

你可能感兴趣的:(c++,算法,开发语言)