貪心演算法 揹包 問題

2021-09-24 03:16:29 字數 1236 閱讀 2755

貪心演算法概要

貪心演算法(又稱貪婪演算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的區域性最優解。

個人理解

個人覺得貪心演算法,就是發現最終最優和區域性最優間的關係,如果找不出這種必然關係,那麼就無法用貪心演算法去解決問題。

問題描述

假定有6個物品,他的質量分別是{35,30,60,50,40,10,25}kg

他們的**分別是{10,40,30,50,35,40,30}元。

如果只能帶走150kg的東西,你應該如何選擇?

解題思路

我們知道,可以通過價效比來進行判斷。所以我們可以通過求出價效比,然後排序價效比,然後從價效比最大的開始選擇,直到裝滿為止。這就是貪心演算法的思路。

**

package tanxin;

public class beibao ;

public static int value = new int ;

// public void greedypackage(int capacity, int weight , int value)

//價效比排序

for (int i = 0; i < n - 1; i++)

}}

//把質量和價值也按照價效比的排序順序對應好,存到新陣列裡

int newweight = new int[n];

int newvalue = new int[n];

for (int i = 0; i < n; i++)

double maxvalue = 0;

//裝東西,優先拿價效比高的

for (int i = 0; i < n; i++)

} system.out.print("共放下了" + (max_weight - capacity) +"kg重的東西\n");

system.out.print("總價值" + maxvalue); }

public static void main(string args)

}

執行結果

共放下了115kg重的東西

總價值160.0

揹包問題(貪心演算法)

揹包問題 程式8 4 2.cpp 定義控制台應用程式的入口點。揹包問題 貪心演算法 include stdafx.h define maxnumber 20 typedef struct node object float find object wp,int n,float m i 0 while...

貪心演算法 揹包問題

詳細見原帖 我寫的是自己的感悟 揹包問題 有乙個揹包,揹包容量是m 150。有7個物品,物品可以分割成任意大小。要求盡可能讓裝入揹包中的物品總價值最大,但不能超過總容量。物品 a b c d e f g 重量 35 30 60 50 40 10 25 價值 10 40 30 50 35 40 30 ...

貪心演算法 揹包問題

貪心演算法 當前最優解 例如在刪除數的乙個例子中,乙個長度不大於240位的整數中,隨機刪除n個數,要求使得剩餘的數 從左到右的,組成乙個最小的整數 貪心步驟 例如 乙個數 1457326 n 4 1 找到當前最大的數 7 刪除 145326 2 找到當前最大的數 6 刪除 14532 3 找到當前最...