當前位置:編程學習大全網 - 編程軟體 - pascl大神請進,中犇也可以來看壹看

pascl大神請進,中犇也可以來看壹看

var

n,i:integer;

t:array[1..100] of integer;

b:array[1..100] of boolean; {狀態數組}

f:text;

s:longint;

st:string;

procedure next(m:integer;ss:longint;sst:string);

var

k:integer;

s0:string;

begin

if m=n then begin

if ss<s then begin

s:=ss;

st:=sst;

for k:=1 to n do

if not b[k] then begin

str(k:0,s0);

st:=st+' '+s0;

end;

end;

end

else for k:=1 to n do if not b[k] then

begin

b[k]:=true;

str(k:0,s0);

next(m+1,ss+t[k]*(n-m),sst+' '+s0);

{第壹個人接水,後面有9人等待,......}

b[k]:=false;

end;

end;

begin

assign(f,'排隊接水.in'); reset(f);

readln(f,n);

for i:=1 to n do read(f,t[i]);

close(f);

for i:=1 to n do b[i]:=false;

s:=9999999;

st:='';

next(1,0,'');

writeln(st);

writeln(s/n:10:2);

end.

{這是窮舉所有可能的總體最優遞歸解法!

從計算結果看,將接水時間從小到大排序,

按接水時間短的優先打水,最後所得等待時間最短}

計算結果:

3 9 2 7 8 1 4 6 10 5

243.90

  • 上一篇:安卓平板有哪些記筆記app?
  • 下一篇:rc電路是什麽
  • copyright 2024編程學習大全網