o 1揹包問題

2021-06-14 15:54:33 字數 654 閱讀 3355

給定n種物品和一揹包。物品i的重量是wi,其價值為vi,揹包的容量為c。問應如何選擇裝入揹包的物品,使得裝

入揹包中物品的總價值最大?

物品個數n=5,物品重量w[n]=,物品價值v[n]=,  包的體積是10

輸入

5 10

2 62 3

6 55 4

4 6輸出

15

#include#include#define maxn 100

#define maxv 1000

int max(int a,int b)

//n件物品和乙個容量為v的揹包。第i件物品的費用是c[i],價值是w[i]

//演算法1:經典dp二維陣列解法,時間複雜度及空間複雜度均為o(nv)

int zeroonepack1(int n,int v,int c,int w)

}return f[n][v];

}int main()

printf("%d\n",zeroonepack1(n,v,c,w));

}return 0;

}

此演算法精煉可靠

通俗易懂不錯

揹包問題1

有n個魔法石,重量分別為w1,w2,w3 wn,有乙個可裝重量為s的揹包,從n件魔法石中取若干件,使得放入揹包的重量之和剛好為s,求放的方法,若不存在該種情況則輸出failed。輸入樣例 10 s 5 n 重量 1 2 3 4 5 輸出樣例 1 4 5 遞迴,即乙個乙個將物品放入揹包內試一下,設函式...

揹包問題1

做了兩道揹包問題,迷迷糊糊也算是弄懂了一些揹包的模型。poj1837 這個題主要是建立揹包模型bi比較難,當時沒有想到第二維可以是平衡狀態,看到網上大佬的提示才想到,如下 include include include includeusing namespace std int dp 25 150...

揹包問題(1)

有n件物品,每件物品的重量為w i 價值為v i 現有乙個容量為c的揹包,問如何選取物品放入揹包,使得揹包內物品的總價值最大。其中每種物品都只有一件。用dp i j 表示有前i件物品 揹包容量為j時揹包所能放下物品的最大價值。對每件物品進行決策,不選 0 或是選 1 狀態轉移方程 dp i j ma...