揹包問題之1

2021-07-11 19:21:12 字數 552 閱讀 3117

在9件物品中選出3件使其重量和與700克之差的絕對值最小。

這裡有在n個數中找出r個數的組合的兩種方法,根據這兩種方法對上面的問題對應有兩種解法,下面給出的**只是其中一種。

c++源**:

演算法說明:巢狀迴圈中i,j,k的變化過程如下:

(0,1,2)、(0,1,3)、……、(0,1,8)

(0,2,3)、……、(0,2,8)

…… (6,7,8)

#include 

#include

using

namespace

std;

const

int n = 9;

int main()

int bestw = int_max;

int besti = 0;

int bestj = 1;

int bestk = 2;

for (int i=0;i2;++i)}}

}cout

<'\t'

<'\t'

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...