貪心思想:局部最優從而達到整體最優
題意:t組測試數據,每組n塊木頭,每塊木頭有相應的length和weight。現在對n塊木頭進行處理,setup time如下定義:
1、處理第一塊木頭setup time爲1
2、如果後來處理木頭的length和weight分別都不小於前一塊的length和weight,則不需要setup time,否則setup time加一
求處理全部木頭的最小setup.
分析:
1、首先對木頭進行非降排序,每個木頭的結構爲(l,w),以length爲主元素,weight爲次元素。
(l1,w1)>(l2,w2)的條件是l1>l2 || (l1==l2 && w1>l2)
2、其次進行貪心選擇。初始計數器c=0, 每次從排序好的木頭前面選擇未使用過的木頭(l,w)做爲當前木頭,然後標記已用,遍歷之後沒有用過的木頭(l1,w1),如果有(l1>=l&&w1>=w)則置(l1,w1)爲已用並且替換當前木頭爲(l1,w1)。每次遍歷之後計數器c加1,如果c等於總木頭數退出,否則跳到步驟2.
代碼: