對揹包問題的總結:
首先說遞推公式:
arr[i][j] = Math.max(arr[i – 1][j], arr[i – 1][j – w[i]] + v[i]);
w[i]爲物品質量的數組,v[i]爲物品價值的數組
arr[i][j]表示裝i個物品(實際上這裏的i,arr[i][j] 表示裝i個物品,w[i],v[i]表示選擇第i個物品),承重爲j時揹包的最大價值,
首先容易想到arr[i][0] == 0(即arr[1][0],arr[2][0]….) 因爲j==0表示承重爲0,自然裝不下東西,所以總價值爲0
然後arr[0][j] == 0…. 原因是雖然可以承重j 但是裝了0個物品 故總價值爲0。
感謝大佬博客–轉載自:http://blog.csdn.net/mu399/article/details/7722810
另外這裏有測試數據:https://zhidao.baidu.com/question/77646243
—–大佬博客寫的很詳細,不過其實搞懂裏面那個圖就好了
理解了思想其實也就不那麼難。
一直看博客不是辦法,以爲自己會了其實並不會,多動手碼一碼,其實沒有那麼難。
—–獻給想成爲大佬的我們