貪心法解決0 1揹包問題

2021-07-24 21:44:14 字數 448 閱讀 2243

貪心法是指 在揹包沒有裝滿之前,只要能裝得下就裝進揹包.

在使用貪心法解決0-1揹包問題主要在於分解方案和貪心選擇方案.

(貪心法不能保證最優解)

為了盡可能的得到最優解,選擇物品時,總是選擇v[i]/w[i]最大的物品裝進去

所以在程式的開始,應首先對物品按照v[i]/w[i]從大到小進行排序,因此在排序的過程中可以定義乙個陣列來記錄原本的第i個物品在排序之後放在第幾位,即th[i]=k:原來的第i個物品放在現在的第k個裡面.(也可以定義乙個結構體在結構體中記錄原來的次序)

public class tanxin {

int tanxin(int w,int v,int x,int th,int max,int total){

int k = 0,q,c=total;

int sum =0;

while(k

貪心法解決揹包問題

揹包問題 問題描述 給定n 種物品和乙個容量為c的揹包,物品i的重量是wi,其價值為vi,揹包問題是如何選擇裝入揹包的物品,使得裝入揹包中物品的總價值最大。注意 和0 1揹包問題的區別,在揹包問題中,可以將某種物品的一部分裝入揹包中,但不可重複裝入。用貪心演算法求解揹包問題的關鍵是如何選擇貪心策略,...

貪心法(非0 1揹包問題)

給定揹包容量50kg,物品資訊 物品1,重量10kg,價值60元 物品2,重量20kg,價值100元 物品3,重量30kg,價值120元 注意 可以部分裝入 和題目 pragma once include include include include include using namespace...

貪心法解決連續揹包問題

continuousknapsack w 1.n v 1.n l input n件物品的重量陣列w和價值陣列v,揹包承重l output 沒見物品放入揹包的重量陣列p 1.n 總價值c for i 1 to n do p i 0 r i v i w i sort r in decreasing or...