用C++写一个01背包
时间: 2023-05-11 10:05:36 浏览: 57
问题已收到,以下是C语言实现01背包的代码:
#include <stdio.h>
#define MAX_N 1000
#define MAX_W 10000
int n, W;
int w[MAX_N], v[MAX_N];
int dp[MAX_N+1][MAX_W+1];
int max(int a, int b) {
return a > b ? a : b;
}
int main() {
scanf("%d %d", &n, &W);
for (int i = 0; i < n; i++) {
scanf("%d %d", &w[i], &v[i]);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j <= W; j++) {
if (j < w[i]) {
dp[i+1][j] = dp[i][j];
} else {
dp[i+1][j] = max(dp[i][j], dp[i][j-w[i]] + v[i]);
}
}
}
printf("%d\n", dp[n][W]);
return 0;
}
相关问题
用c++写一个01背包
Sure, here's an example code for solving the 01 knapsack problem in C:
```c
#include <stdio.h>
int max(int a, int b) {
return (a > b) ? a : b;
}
int knapsack(int W, int wt[], int val[], int n) {
int i, w;
int K[n+1][W+1];
for (i = 0; i <= n; i++) {
for (w = 0; w <= W; w++) {
if (i == 0 || w == 0)
K[i][w] = 0;
else if (wt[i-1] <= w)
K[i][w] = max(val[i-1] + K[i-1][w-wt[i-1]], K[i-1][w]);
else
K[i][w] = K[i-1][w];
}
}
return K[n][W];
}
int main() {
int val[] = {60, 100, 120};
int wt[] = {10, 20, 30};
int W = 50;
int n = sizeof(val)/sizeof(val[0]);
printf("Maximum value: %d", knapsack(W, wt, val, n));
return 0;
}
```
This code uses dynamic programming to solve the 01 knapsack problem, where we have a set of items each with a weight and a value, and we want to maximize the total value of items we can carry in a knapsack with a maximum weight capacity.
请你用C++写一个01背包问题
好的,以下是用 C++ 写的 01 背包问题代码:
```c++
#include <iostream>
using namespace std;
int main()
{
int n, W;
cin >> n >> W; // 输入物品数量和背包容量
int wt[n], val[n];
for (int i = 0; i < n; i++) {
cin >> wt[i] >> val[i]; // 输入每个物品的重量和价值
}
int dp[n + 1][W + 1];
for (int i = 0; i <= n; i++) {
for (int w = 0; w <= W; w++) {
if (i == 0 || w == 0) {
dp[i][w] = 0; // 初始化第一行和第一列为0
} else if (wt[i - 1] <= w) {
dp[i][w] = max(val[i - 1] + dp[i - 1][w - wt[i - 1]], dp[i - 1][w]); // 转移方程
} else {
dp[i][w] = dp[i - 1][w];
}
}
}
cout << dp[n][W] << endl; // 输出最大价值
return 0;
}
```
以上代码实现了一个基本的 01 背包问题,时间复杂度为 O(nW),其中 n 是物品数量,W 是背包容量。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)