一本通一书目:装箱与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)
还没有任何评论哟~
