Delphi-Quellcode:
function belegung(pcStunden: array[1..i] of Cardinal): array[1..j] of [0..i];
var
aktPc: Cardinal;
aktZeit: Cardinal;
begin
// keine PCs zugeteilt
for aktZeit := 1 to j do
result[aktZeit] := 0;
// nacheinander PCs durchgehen und Zeiten belegen
aktZeit := 1;
for aktPc := 1 to i do
begin
while pcStunden[aktPc] > 0 do
begin
if aktZeit > j then
raise "Mehr PC-Stunden aus freie Zeiten";
pcStunden[aktPc] := pcStunden[aktPc] - 1;
result[aktZeit] := aktPc;
aktZeit := aktZeit + 1;
end;
end;
if aktZeit <= j then
raise "Weniger PC-Stunden als freie Zeiten";
end;
Das Ergebnis sieht dann so aus:
Code:
|H1|H2|H3|H4|H5|H6|H7|H8|H9
PC1| 1| 1| 1| 0| 0| 0| 0| 0| 0
PC2| 0| 0| 0| 1| 1| 1| 0| 0| 0
PC3| 0| 0| 0| 0| 0| 0| 1| 1| 0
PC4| 0| 0| 0| 0| 0| 0| 0| 0| 1
Wieso möchtest du dieses Ergebnis nicht (ich nehme mal an du willst es nicht so)?