------------恢复内容开始------------
关于动态规划法,我怎么觉得就是蛮力法,有时候比蛮力法看起来还复杂
1.0/1背包问题
目前存在的问题,可能可以忽视?
#include<iostream>
#include<algorithm>
using namespace std;
int KnapSack(int w[], int v[], int n, int c);
int main()
{
int w[6] = { 0,2,2,6,5,4 };
int v[6] = { 0,6,3,5,4,6 };
int n = 5, c = 10;
cout << KnapSack(w, v, n, c) << endl;
}
int KnapSack(int w[], int v[], int n, int c) {
int i, j;int V[6][11] = { {0} };
int x[6];
for (i = 0;i <= n;i++) {
V[i][0] = 0;
}
for (j = 0;j <= c;j++) {
V[0][j] = 0;
}
for (i = 1;i <= n;i++) {
for (j = 1;j <= c;j++) {
if (j < w[i]) {
V[i][j] = V[i - 1][j];
}
else {
V[i][j] = max(V[i - 1][j], V[i - 1][j - w[i]] + v[i]);
}
}
}
for (j = c, i = n;i > 0;i--) {
if (V[i][j] > V[i-1][j]) {
x[i] = 1;j = j - w[i];
}
else x[i] = 0;
}
return V[n][c];
}
------------恢复内容结束------------
算法---动态规划
原文:https://www.cnblogs.com/zlshy/p/11820399.html