最佳排程問題pascal程式

2021-07-25 13:47:06 字數 1326 閱讀 7610

description

假設有n個任務由k個並行工作的機器來完成。完成任務i需要的時間為ti。試設計乙個演算法找出完成這n個任務的最佳排程,使得完成全部任務的時間最早。

演算法設計:對任意給定的整數n和k,以及完成任務i需要的時間為ti,i=1,2,3……n。計算完成這n個任務的最佳排程。

input

第一行有2個正整數n和k。第2行的n個正整數是完成n個任務需要的時間。

output

將計算的完成全部任務的最早時間

sample input

7 3

2 14 4 16 6 5 3

sample output17

這題我是用搜尋來做的

這題有點像接水問題

var

n,k,tj,i:longint;

b,t:array[0..10000]of longint;

procedure kp(l,r:longint);

vari,j,mid:longint;

begin

if l>=r then exit;

i:=l;j:=r;mid:=t[(l+r)div 2];

repeat

while t[i]>mid do inc(i);

while t[j]j;

kp(l,j);

kp(i,r);

end;

procedure search(dep,time:longint);

vari:longint;

begin

if dep>n then

if time=tj then exit;

for i:=1 to k do

begin

b[i]:=b[i]+t[dep];

if b[i]>time then search(dep+1,b[i]) else search(dep+1,time);

b[i]:=b[i]-t[dep];

end;

end;

begin

readln(n,k);tj:=10000;

fillchar(t,sizeof(t),0);

for i:=1 to n do

read(t[i]);

kp(1,n);

fillchar(b,sizeof(b),0);

search(1,0);

write(tj);

end.

最佳排程問題

假設有n n 20 個任務由k k 20 個可並行工作的機器完成。完成任務i需要的時間為ti。試設計乙個演算法,對任意給定的整數n和k,以及完成任務i 需要的時間為ti i 1 n。計算完成這n個任務的最佳排程,使得完成全部任務的時間最早。輸入格式 輸入資料的第一行有2 個正整數n和k。第2 行的n...

最佳排程問題

假設有n個任務由k個可並行工作的機器完成,完成任務i需要的時間為ti,對任意給定的整數n和k,以及完成任務i需要的時間ti,設計乙個演算法,求完成這n個任務的最佳排程,使得完成全部任務的時間最早。第一行有2個正整數n和k,第二行有n個正整數,表示ti n 7000,c樣例輸入7 3 2 14 4 1...

PTA 最佳排程問題

假設有n n 20 個任務由k k 20 個可並行工作的機器完成。完成任務i需要的時間為ti。試設計乙個演算法,對任意給定的整數n和k,以及完成任務i 需要的時間為ti i 1 n。計算完成這n個任務的最佳排程,使得完成全部任務的時間最早。輸入格式 輸入資料的第一行有2 個正整數n和k。第2 行的n...