Advertisement

一本通一书目:装箱与01背包问题

阅读量:

题目说明

复制代码
    1、f[i][j] 表示前i件物品放入 体积为j 的背包中,是否可以刚好放满体积j
    2、状态转移方程:
    	f[i][j] = f[i - 1][j] || f[i - 1][j - v[i]]
    	f[i - 1][j]		//不放第i件物品
    	f[i - 1][j - v[i]] // 放第i件物品
    3、f[i][j] 用一维表示
    
    
      
      
      
      
      
      
    
复制代码
    #include <bits/stdc++.h>
    using namespace std;
    const int MaxM = 20010;
    int m, n;
    const int MaxN = 50;
    int v[MaxN];
    bool f[MaxM];
    
    int main()
    {
    	scanf("%d%d", &m, &n);
    	for(int i = 1; i <= n; ++i)
    		scanf("%d", &v[i]);
    	memset(f, false, sizeof f);
    	f[0] = true;
    	for(int 

全部评论 (0)

还没有任何评论哟~