背包問題 0-1

假設背包容積 W,寶物數量 N,其屬性如下:

寶物₁寶物₂寶物ₙ
體積v₁v₂vₙ
價值c₁c₂cₙ

每件寶物只有一件,因此只考慮「拿」或「不拿」兩種情況 (0 或 1)。

暴力搜尋法

以下以 4 個寶物為例,列出三種產生組合的方法:

#include <iostream>
using namespace std;
int main(){
  for(int a1=0;a1< =1;a1++)
    for(int a2=0;a2<=1;a2++)
      for(int a3=0;a3<=1;a3++)
        for(int a4=0;a4<=1;a4++)
          cout<<a1<<a2<<a3<<a4<<endl;
}

實際計算最大價值時,可加入條件判斷與總和計算。
詳細程式請見原始教材。

此外,可利用堆疊或二進位迭代方式生成組合。

ppt 說明下載