文章

8

粉丝

53

获赞

0

访问

3.6k

头像
简单的背包问题 题解:
P5129
发布于2024年3月27日 18:47
阅读数 694

其实就是最基础的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) {
                //当背包有空间时,选择装入或者不装入,选择其中能够获得更大重量的
    &...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发