作業排程問題之貪心演算法

2021-10-10 22:46:51 字數 639 閱讀 6389

#include

#include

struct node

;struct node a[20]

,b[20];

intmain()

for(i=

1;i<=n;i++

)//按照截止時間排序,截止時間相同則按照value排序

for(i=

1;i)for

(j=i+

1;j<=n;j++

)else

if(a[i]

.time==a[j]

.time)}}

//從左往右對a進行處理,將其填入對應的時間,如果該時間被佔,則看前面有沒有空的時間。有,填入

//如果沒有,比較它與b中價值最小的,它大則替換

for(i=

1;i<=n;i++

)else

if(a[i]

.value>min)}}

}}int sum=0;

for(i=

1;i<=n;i++

)printf

("\n");

printf

("%d"

,sum)

;return0;

}

貪心演算法之區間排程問題

分析 拿到這道題目,首先要看清楚最終的題目要求,它的要求是參與盡可能多的工作,並不是說工作總時間最長。對於這題我們其實可以使用貪心演算法,就是不斷選取當前最優策略 我們不斷選取工作,其實可以有以下幾種思路進行選取,並進行聚反例來排除這種思路 1.在可選的工作中,選取開始時間最早的.反例 這種情況下先...

貪心演算法之區間排程問題

452.用最少數量的箭引爆氣球 什麼是貪心演算法呢?貪心演算法可以認為是動態規劃演算法的乙個特例,相比動態規劃,使用貪心演算法需要滿足更多的條件 貪心選擇性質 但是效率比動態規劃要高。比如說乙個演算法問題使用暴力解法需要指數級時間,如果能使用動態規劃消除重疊子問題,就可以降到多項式級別的時間,如果滿...

區間排程問題 貪心演算法

問題 有 n 項工作,每項工作分別在 s i 時間開始,在 t i 時間結束 對於每項 工作,你都有可以選擇參與與否。如果選擇了參與,那麼自始自終都必須全程參與。此外,參與工作的時間段不能重疊 即使是開始的瞬間和結束的瞬間的重疊也 是不允許的 include include include usin...