1樓:匿名使用者
如果各機器執行速度相等,換句話就是任務無論在哪臺機器上執行完成時間都相等,則問題較簡單
1 . 先將任務由大到小排序
2 . 計算n個任務需要的總時間和平均到k個機器上的時間
3 . 將大於平均時間的任務各分配一個機器,找到最大完成時間
4 . 將其他任務順序安排在一臺機器上,如果時間超出最大時間,則把該任務交給下一個機器,下一個任務繼續在這臺機器上試安排,直到所有任務都不能在小於最大完成時間的情況下安排
5 . 安排下一臺機器直道所有任務安排完,
6 . 或有可能安排某(些)任務找不到小於最大完成時間 那麼重新掃描各臺機器使再加上該任務後時間最小,按此方法安排萬所有任物
資料結構採用連結串列比較合適,
k個機器k個鏈,n個任務按大小順序插入一個連結串列,安排後從任務連結串列中移動到機器連結串列中。知道連結串列為空
2樓:犁俠
這個問題的演算法是貪心演算法,具體證明我就沒寫出來了。。
我寫的**複雜度是n^2,有一個排序是nlogn,喝一個2重for迴圈.
但是2重for迴圈可以簡化為for+最小堆的維護,所以最好的複雜度是nlogn,
但是懶得寫最小堆了...
就這樣#include
#include
using namespace std;
int a[10001];
int k_hold[10001]={};
int main()
cout< system("pause");} 求c語言高手 多機排程問題 ,設計個程式 要c語言版的 不要c++的 謝謝啊 3樓:匿名使用者 #include "stdio.h" struct date ;date today,tomorrow ; void main() if(((today.month==2)&&(today.year%4==0)&&(today. year%100==0))||(today.year%4!=0)) ltd[2]=28; tomorrow.day=(today.day+1)%(ltd[today.month]+1); tomorrow.month=(today.month+(today.day+1)/ltd[today.month])%13; tomorrow.year=today.year+(today.month+(today.day+1)/ltd[today.month])/13; if(tomorrow.day==0) tomorrow.day=1; if(tomorrow.month==0) tomorrow.month=1; printf("%d,%d,%d,",tomorrow.year,tomorrow.month,tomorrow.day); ltd[0]=0; ltd[2]=29;}} // 以上程式經turbo c驗證。 4樓:蔡淼檢雄 多級反饋佇列排程演算法多級反饋佇列排程演算法是一種cpu處理機排程演算法,unix作業系統採取的便是這種排程演算法。多級反饋佇列排程演算法即能使高優先順序的作業得到響應又能使短作業(程序)迅速完成。(對比一下fcfs與... 推薦為最佳答案的話有兩種方式 第一個是提問者採納。第二個是推薦,這個裡呢就是芝麻將後臺推薦的了。提問者採納和採納獲得的經驗 財富等都不一樣喲。這個要看提問者的心情 為什麼我在上的回答有時候被選為最佳答案,有時候是 被採納 的推薦答案?就是解釋一下這兩 最佳答案是提問者採納的!採納答案是其他支援你的答... 用我媽媽的話我是 早戀兒童 但是我們家處理這些問題很開通。收到的情書都會給我媽媽看。我覺得最重要的一點是不要把它當作洪水猛獸,正確引導兩個人的感情就可以了。如果兩個能一起用功的話那動力是非常大的。特別不要動輒就要求 分手 什麼的,我建議是這兩個字最好不要提。要不就是沒有用要不就是適得其反。中學時期的... 卡 機現象對於cpu和記憶體來說的。cpu頻率過低,運算速度慢,就會造成 卡 機現象虛擬記憶體是記憶體的擴充套件,虛擬記憶體技術是一種用空間 硬碟空間 換取時間的一種技術。它把記憶體即將要執行的程式先放到虛擬記憶體裡,方便記憶體的呼叫!如果記憶體過低,那麼對於執行大量的程式來說,前面的程式沒執行完,...我在回答問題,答案怎樣被為最佳答案的
你認為家長老師處理中學生早戀問題的最佳方法是什麼?
來幫我看看我的電腦小問題 答的好給最佳答案