mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4mobile wallpaper 5mobile wallpaper 6mobile wallpaper 7
60 字
1 分钟
四则运算2025 - 部分背包问题
2026-05-28

题目描述#

部分背包问题:给定N个物品和容量为W的背包,每个物品有重量和价值,可以部分装入背包,求能装入背包的最大价值。

代码#

#include <stdio.h>
int main() {
int N, W;
scanf("%d %d", &N, &W);
double w[1000][3];
for (int i = 0; i < N; i++)
{
scanf("%lf %lf", &w[i][0], &w[i][1]);
w[i][2] = w[i][1] / w[i][0];
}
// 按照每个物品的单位重量价值进行排序
for (int i = 0; i < N; i++) {
for (int j = 0; j < N - i; j++) {
if (w[j][2] < w[j + 1][2]) {
double temp[3];
for (int k = 0; k < 3; k++) {
temp[k] = w[j][k];
}
for (int k = 0; k < 3; k++) {
w[j][k] = w[j + 1][k];
}
for (int k = 0; k < 3; k++) {
w[j + 1][k] = temp[k];
}
}
}
}
double sum = 0;
for (int i = 0; i < N; i++) {
if (W >= w[i][0]) {
W -= w[i][0];
sum += w[i][1];
}
else {
sum += w[i][2] * W;
break;
}
}
printf("%.0f\n", sum);
return 0;
}
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

四则运算2025 - 部分背包问题
https://blog.sherry.qzz.io/posts/c/四则运算2025/
作者
Sherry
发布于
2026-05-28
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录