From bd623bdd0d0311073024b10bc422ec43a37bcb7e Mon Sep 17 00:00:00 2001 From: taoxiao <2385348640@qq.com> Date: Sat, 28 Oct 2023 19:25:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=83=8C=E5=8C=85=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PackageQuestion0-1.cpp | 75 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 PackageQuestion0-1.cpp diff --git a/PackageQuestion0-1.cpp b/PackageQuestion0-1.cpp new file mode 100644 index 0000000..0b24d6b --- /dev/null +++ b/PackageQuestion0-1.cpp @@ -0,0 +1,75 @@ +#include +using namespace std; +int main() +{ + int n, C, i, j; + cout << "请输入背包容量:"; + cin >> C; + cout << "请输入物品数:"; + cin >> n; + int *w = new int[n+1]; //存储物品的重量 + int *v = new int[n+1]; //存储物品的价值 + int *x = new int[n+1]; //表示最优子结构 + int **V = new int*[n+1]; //设置备忘录 + for (i = 0; i < n + 1; i++) + { + V[i] = new int[C + 1]; + } + cout << "请输入这些物品的重量:"; + w[0] = 0; + for (i = 1; i < n + 1; i++) //重量和价值都从下标1开始存,这样方便后面计算 + cin >> w[i]; + cout << "请输入这些物品的价值:"; + v[0] = 0; + for (i = 1; i < n + 1; i++) + cin >> v[i]; + + for (i = 0; i < n + 1; i++)//初始化第0列 + V[i][0] = 0; + for (j = 0; j < C + 1; j++)//初始化第0行 + 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] = V[i - 1][j] > (V[i - 1][j - w[i]] + v[i]) ? 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; + } + /*控制X的输出格式*/ + cout << "此题最优解为:X={"; + for (i = 1; i < n; i++) + cout << x[i] << ","; + cout << x[i] << "}" << endl; + /*输出表*/ + /*控制表头的输出格式*/ + cout << '\t'; + for (j = 0; j < C+1; j++) + cout << j << '\t'; + cout << endl; + /*输出表最左边一列和表的内容*/ + for (i = 0; i < n + 1; i++) + { + cout << i << '\t';//输出表最左边 + for (j = 0; j < C + 1; j++)//输出表的内容 + cout << V[i][j] << '\t'; + cout << endl; + } + delete[] w; + delete[] v; + delete[] x; + delete[] V; + return 0; +} + +