文章
8
粉丝
53
获赞
0
访问
3.6k
其实就是最基础的0,1背包问题的变体
这里只需要在基础的0,1背包问题中,将每个物体的重量和体积设置为相同
那么,能够装入的最大重量一定是小于等于体积的
如果能够装入的最大重量与背包体积相等,那么说明有解,否则无解
#include <iostream>
#include <string.h>
using namespace std;
int dp[21][1010]; //dp[i][j]表示前i个物品装在j体积的背包中最大的重量
int w[21], c[21];
int main() {
int N, V;
while(cin >> V >> N){ //输入背包的体积V 物品的数量N
for (int i = 1; i <= N; ++i) {
cin >> w[i]; //每个物品的重量wi
}
for (int i = 1; i <= N; ++i) {
c[i]=w[i]; //每个物品的体积都等于其重量
}
for (int i = 1; i <= N; ++i) {
for (int j = 0; j <= V; ++j) {
//当背包有空间时,选择装入或者不装入,选择其中能够获得更大重量的
&...
登录后发布评论
暂无评论,来抢沙发