有n項工作,每項工作分別在start[i]時間開始,在end(i)時間結束。對於每項工作,你都可以選擇參與與否,如果選擇參與,那麼自始至終必須全程參與。此外參與時間段不能重疊(即使是開始的瞬間與結束的瞬間重疊也是不允許的),那麼最多能參與多少項工作?
//演算法思想:在可選的工作中,每次都選取結束時間最早的工作
#include #include #include using namespace std;
//設定全域性變數
const int max = 10000;
int n = 5;//工作的個數
int start[max] = ;//儲存開始時間的陣列
int end[max] = ;//儲存結束時間的陣列
pairspace[max];
//選取最多工作的個數
void solve()
//對結束時間按字典排序
sort(space, space + 5);
for(int j = 0; j < n; ++j)
}cout << count;
}int main()
區間排程問題
有n項工作,每項工作分別在start i 時間開始,在end i 時間結束。對於每項工作,你都可以選擇參與與否,如果選擇參與,那麼自始至終必須全程參與。此外參與時間段不能重疊 即使是開始的瞬間與結束的瞬間重疊也是不允許的 那麼最多能參與多少項工作?演算法思想 在可選的工作中,每次都選取結束時間最早的...
區間排程問題
我們要選擇結束時間最早的,這樣才能保證選的區間比較多,因此這個裡面會有對區間的排序,結束時間最早排在前面,運用了pair,pair中有兩個屬性就是first,second,把s存在了second中,把t存在了first中,這樣就可以把結束時間最早放在前面。include include includ...
區間排程問題
區間排程問題 有n項工作,每項工作分別在si時間開始,在ti時間結束。對於每項工作,你都可以選擇參與與否。如果選擇了參與,那麼自始至終都必須全程參與。此外,參與工作的時間段不能重疊 即使是開始的瞬間和結束的瞬間的重疊也是不允許的 你的目標是參與盡可能多的工作,那麼最多能參與多少項工作呢?輸入格式 n...