這題是01背包的動規寫法,代碼有點小問題得改改。應該是這樣:開個二維數組f表示前i個物品、容量為j時的最大價值。輸入總容量m和物品數n,然后循環讀每個物品的重量w和價值c。初始化第一行第一列都為0。狀態轉移方程就是:如果當前容量j >= w,那就比較放進第i個物品和不放的價值,取大的那個,即f = max(f] + c, f);否則就直接等于f。最后輸出f就行。原代碼語法有誤,比如f(0,i)應該用方括號,還有循環里沒定義數組維度,應該先setlength分配內存。總之核心思想就是每步做決策,裝還是不裝,靠狀態轉移搞到底。