做了兩道揹包問題,迷迷糊糊也算是弄懂了一些揹包的模型。
poj1837
這個題主要是建立揹包模型bi比較難,當時沒有想到第二維可以是平衡狀態,看到網上大佬的提示才想到,**如下
#include#include#include#includeusing namespace std;
int dp[25][15005],d[25],w[25],n,m,x,y,z,k,l;
int main()
cout這道題我一開始是懵比的,上網學習了多重揹包之後也是懵比的,最後把01,完全,多重都看了一邊才有了頭緒,我自己寫的用了二進位制拆分(聽起來很難寫起來簡單),網上大佬有用num陣列做的我還沒看懂,先存下來慢慢研究
這是我的
//完全揹包
#include#include#include#includeusing namespace std;
int dp[100005],cash[2000][2],cnt[100000],n,m,x,y,z,k,l,w;
int main()
int t=0;
for (int i=1; i<=n; i++)
if (cash[i][0]>0 && cash[i][1]>0)
}for (int i=1; i<=t; i++)
for (int j=w; j>=cnt[i]; j--)
cout《大佬的
#include#include#includeusing namespace std;
int dp[110000],num[100100],s[2000][2];
int main()
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++)
}}
揹包問題1
有n個魔法石,重量分別為w1,w2,w3 wn,有乙個可裝重量為s的揹包,從n件魔法石中取若干件,使得放入揹包的重量之和剛好為s,求放的方法,若不存在該種情況則輸出failed。輸入樣例 10 s 5 n 重量 1 2 3 4 5 輸出樣例 1 4 5 遞迴,即乙個乙個將物品放入揹包內試一下,設函式...
揹包問題(1)
有n件物品,每件物品的重量為w i 價值為v i 現有乙個容量為c的揹包,問如何選取物品放入揹包,使得揹包內物品的總價值最大。其中每種物品都只有一件。用dp i j 表示有前i件物品 揹包容量為j時揹包所能放下物品的最大價值。對每件物品進行決策,不選 0 或是選 1 狀態轉移方程 dp i j ma...
揹包問題 1 揹包的引入
上篇文章我考慮的是可以找零的方式有幾種,是運用搜尋解決的,但是如果我們要解決的是優化問題,就是說最小要多少硬幣呢?題目的位址是 其實他是乙個揹包問題,所以我準備重學一下。最近做硬幣找零問題,它實際是個揹包問題,很多知識掌握的不紮實。這裡重新總結一下,老規矩,還是靠題目驅動,下面所有題目都給了鏈結 大...