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