来自网络,联系侵删
60 字
1 分钟
四则运算2025 - 部分背包问题
题目描述
部分背包问题:给定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/ 部分信息可能已经过时
相关文章 智能推荐



























