學習記錄2 貪心

2021-09-12 07:55:02 字數 1187 閱讀 9418

定義:通過逐步求區域性最優(當前狀態的最好選擇)來匯出全域性最優(ps:允許的條件下貪心最快)

適用條件:具有最優子結構(乙個問題的最優解包含其子問題的最優解,乙個問題的最優解包含其子問題的最優解)

具有貪心選擇性質(求問題的整體最優解可以通過一系列區域性最優的選擇,即貪心選擇來達到。)

流程

greedy(a)

;           //初始解集合為空集

while (not solution(s))  //集合s沒有構成問題的乙個解

;      a = a-;

}  return s;

(1

)候選集合

a:為了構造問題的解決方案,有乙個候選集合a作為問題的可能解,即問題的最終解均取自於候選集合a。 (2

)解集合

s:隨著貪心選擇的進行,解集合s不斷擴充套件,直到構成滿足問題的完整解。 (3

)解決函式

solution

:檢查解集合s是否構成問題的完整解。 (4

)選擇函式

select

:即貪心策略,這是貪心法的關鍵,它指出哪個候選物件最有希望構成問題的解,選擇函式通常和目標函式有關。 (5

)可行函式

feasible

:檢查解集合中加入乙個候選物件是否可行,即解集合擴充套件後是否滿足約束條件。

例子:

//q1.刪數問題

#include#includeusing namespace std;

main()

if(str.size()>1 && str[0]=='0') str.erase(0,1);//刪除前導0

cout<#includeusing namespace std;

struct baga[1001]; //存放物品的陣列

bool cmp(bag a, bag b)//排序因子(按價效比降序)

//形參n是物品的數量,m是揹包的容量,陣列a是按物品的價效比降序排序

double knapsack(int n,bag a, double m)//注意這裡的bag a是傳址呼叫

貪心 學習理解記錄

本篇是在學習理解貪心的過程中留下的理解和記錄,主要是通過幾個題目來理解貪心的思路 只顧眼前,但是卻能得到最優解,讓眼前的浪費是最小的 不能保證是唯一的最優解但是一定是最優解之一 直觀地表示就是只考慮區域性,每次都拿最合適的乙個,最後得到的就一定是最優解,但是如果出現多種限制條件的話就需要綜合考慮 題...

學習記錄2

pv操作同步過程 對訊號燈狀態進行改變,p呼叫一次 1,v呼叫一次 1。p操作 p s 是乙個原語操作,p操作執行 s 若s為負數,呼叫p s 的程序被阻塞,放到等待佇列q中。p s v操作 v s 剛好與p s 操作相反,v操作執行 s 若s為大於0,繼續執行 s 0,從訊號燈等待佇列移出乙個程序...

學習記錄2

1 如果電腦螢幕顯示異常 安裝360顯示卡驅動 3 win10虛擬機器未聯網,橋接模式沒有作用,勾選nta模式,用於共享主機的ip位址並重新啟動電腦 4 安裝cad如果安裝不成功,安裝路徑資料夾名稱可以修改為英文 5 虛擬機器安裝win10非常卡,將虛擬機器執行記憶體調大,由1gb調整為4gb 6 ...