演算法 (選做)獨立任務最優排程問題

2021-09-29 12:54:59 字數 842 閱讀 6239

用兩台處理機a和b處理n個作業。設第i個作業交給a處理需要時間ai,交給b處理需要時間bi。由於各作業的特點和機器的效能關係,ai和bi之間沒有明確的大小關係。既不能將乙個作業分開由2臺機器處理,也沒有一台機器能同時處理2個作業。設計乙個動態規劃演算法,使得這兩台機器處理完這n個作業的時間最短。

測試用例:

6(任務數目)

2 5 7 10 5 2(機器a處理這些任務的時間)

3 8 4 11 3 4(機器b處理這些任務的時間)

輸出:15

思路:完成k個作業且機器a花費時間為i時間條件下機器b所花費時間的最小值

f[i][k] = min(f[i][k-1]+b[k],f[i-a[k]][k-1])

如果i#include

using

namespace std;

const

int n=6;

int a[n+1]

=;int b[n+1]

=;int mint=

65535

;int x=0;

int f[

2000

][n+1]

=;intmain()

else}}

for(

int i=

0; i<=x; i++

)//遍歷f陣列,f[i][n]的值是n個作

printf

("%d\n"

,mint)

;return0;

}輸入已經在**中輸入

執行效果:

獨立任務最優排程問題

題目 用2 臺處理機a 和b 處理n 個作業。設第i 個作業交給機器a 處理時需要時間i a 若由機器b 來處理,則需要時間i b 由於各作業的特點和機器的效能關係,很可能對於某些i,有ai bi,而對於某些j,j i,有aj bj 既不能將乙個作業分開由2 臺機器處理,也沒有一台機器能同時處理2 ...

獨立任務最優排程問題

用2臺處理機a和b處理n個作業。設第i個作業交給機器a處理時需要時間ai,若由機器b來處理,則需要時間bi。由於各作業的特點和機器的效能關係,很可能對於某些i,有ai bi,而對於某些j,j不等於i,有aj第一行是乙個正整數n,表示要處理n個作業。在接下來的兩行中,每行有n個正整數,分別表示處理機a...

獨立任務最優排程

include using namespace std int main int b int sum 0 for int i 0 i n i int m new int n m為b機器的使用時間,i為第幾個工作入隊,j為a機器使用時間 for int i 0 i n i for int i 0 i ...