假設背包容積 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;
}
|
實際計算最大價值時,可加入條件判斷與總和計算。
詳細程式請見原始教材。
此外,可利用堆疊或二進位迭代方式生成組合。