动态规划之背包问题(持续更新)
Posted ruthank
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态规划之背包问题(持续更新)相关的知识,希望对你有一定的参考价值。
一、01背包:
n个物品,每个物品有其重量和价值。你的背包装物品的总重量不能超过 m ,求获得的最大价值。
#include <iostream> #include <cstdlib> #include <cstdio> #include <cstring> using namespace std; #define maxn 1100 int main() { int t; scanf("%d", &t); for (int ca = 1; ca <= t; ca++) { int n, m; int f[maxn][maxn], v[maxn], w[maxn]; memset(f, 0, sizeof(f)); scanf("%d%d", &n, &m); for (int i = 1; i <= n; i++) scanf("%d", &v[i]); for (int i = 1; i <= n; i++) scanf("%d", &w[i]); for (int i = 1; i <= n; i++) for (int j = 0; j <= m; j++) { f[i][j] = f[i-1][j]; if (j >= w[i]) f[i][j] = max(f[i-1][j], f[i-1][j-w[i]]+v[i]); } printf("%d ", f[n][m]); } }
以上是关于动态规划之背包问题(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章