貪心演算法(淺解)

2021-10-07 12:40:33 字數 921 閱讀 7710

問題描述:阿里巴巴走進了裝滿寶藏的藏寶洞。藏寶洞裡面有

n(n≤100) 堆金幣,第 i堆金幣的總重量和總價值mi,vi(1≤mi,vi≤100)。阿里巴巴有乙個承重量為 t(t≤1000) 的揹包,但並沒辦法將全部的金幣都裝進去。他想裝走盡可能多價值的金幣。所有金幣都可以隨意分割,分割完的金幣重量價值比(也就是單位**)不變。請問阿里巴巴最多可以拿走多少價值的金幣?

輸入:第一行兩個整數 n、t

接下來 n 行,每行兩個整數

mi,vi

輸出格式:

乙個整數表示答案,輸出兩位小數。

輸入:             輸出:

4 50 240.00

10 60

20 100

30 120

15 45

#include

#include

#include

using namespace std;

struct three

s[m]

; bool cmp

(three a,three b)

int main()

sort

(s,s+n,cmp)

;for

(i=0

;i)else

}printf

("%.2lf"

,sum)

;return0;

}

1.針對同一物件的不同變化量定義結構體。如時間段的起始時間,陣列元素交換順序後保留原序號。

2.選取區域性最優解,對特定物件(針對性)進行排序,可用#include中的sort函式進 行排序。(c++)

3. 特定問題特定分析。

貪心涉及的解法(洛谷上學到的)

1.優先佇列

經典貪心演算法 貪心演算法概述

貪心演算法具有最優子問題結構,它的特點是 短視 每次選擇對當前局面最有利的決策,來一步步獲得最優解。我個人認為,貪心不是乙個具體的方法,而是一類方法,貪心演算法的關鍵不在於想到,而在於正確性的證明。要證明乙個貪心演算法是正確的,需要證明我們可以把乙個最優解逐步轉化為我們用貪心演算法所得到的解,而解不...

演算法 貪心演算法

把乙個複雜問題分解為一系列較為簡單的區域性最優選擇,每乙個選擇都是對當前解的乙個擴充套件,知道獲得問題的完整解。在解決問題的策略上目光短淺,只根據當前已有的資訊做出選擇,而且一旦做出了選擇,不管將來有什麼結果這個選擇都不會改變。換言之,貪心法並不是從整體最優考慮,它所做出的選擇只是在某種意義上的區域...

演算法 貪心演算法

集合覆蓋問題 旅行商問題等都屬於np完全問題,在數學領域上並沒有快速得到最優解的方案,非常適合用貪婪演算法。判斷方法 1.元素較少時,一般執行速度很快,但隨著元素數量增多,速度會變得非常慢 2.涉及到需要計算比較 所有的組合 情況的通常是np完全問題 3.無法分割成小問題,必須考慮各種可能的情況。這...