动态规划之背包九讲

匿名 (未验证) 提交于 2019-12-03 00:09:02

背包九讲

背包九讲链接:https://www.cnblogs.com/jbelial/articles/2116074.html

01背包:

题目链接:https://www.acwing.com/problem/content/2/

二维数组优化前:

 1 #include <iostream>  2   3   4   5 using namespace std;  6   7 const int N = 1e3 + 10;  8 int v[N], w[N];  9 int f[N][N]; 10  11 int main() { 12     int N, V; 13     cin >> N >> V; 14     for (int i = 1; i <= N; i++)    cin >> v[i] >> w[i]; 15     for (int i = 1; i <= N; i++) { 16         for (int j = 1; j <= V; j++) { 17             f[i][j] = f[i - 1][j]; 18             if (j >= v[i])  f[i][j] = max(f[i - 1][j], f[i - 1][j - v[i]] + w[i]); 19         } 20     } 21     cout << f[N][V] << endl; 22     return 0; 23 }
View Code

优化后:

#include <iostream> #include <algorithm>   using namespace std;  const int N = 1e3 + 10; int v[N], w[N]; int f[N];  int main() {     int N, V;     cin >> N >> V;     for (int i = 1; i <= N; i++)    cin >> v[i] >> w[i];     for (int i = 1; i <= N; i++)          for (int j = V; j >= v[i]; j--)             f[j] = max(f[j], f[j - v[i]] + w[i]);     cout << f[V] << endl;     return 0; }
View Code

完全背包:

题目链接:https://www.acwing.com/problem/content/3/

优化前:

#include <iostream>   using namespace std;  const int maxn = 1e3 + 10; int v[maxn], w[maxn]; int f[maxn][maxn];  int main() {     int N, V;     cin >> N >> V;     for (int i = 1; i <= N; i++)    cin >> v[i] >> w[i];     for (int i = 1; i <= N; i++)         for (int j = 1; j <= V; j++) {             f[i][j] = f[i - 1][j];             if (j >= v[i])   f[i][j] = max(f[i][j], f[i][j - v[i]] + w[i]);         }     cout << f[N][V] << endl;     return 0; }
View Code

优化后:

#include <iostream>   using namespace std;  const int N = 1e3 + 10; int v[N], w[N]; int f[N];  int main() {     int n, V;     cin >> n >> V;     for (int i = 1; i <= n; i++)    cin >> v[i] >> w[i];     for (int i = 1; i <= n; i++)         for (int j = 1; j <= V; j++)              if (j >= v[i])  f[j] = max(f[j], f[j - v[i]] + w[i]);     cout << f[V] << endl;     return 0; }
View Code

多重背包:

题目链接:https://www.acwing.com/problem/content/4/

数据范围小,不用优化:

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!