Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
为什么COMPILE ERROR?程序在FREE PASCAL 上运行正常,应该没错。 var a:array[1..20,1..20,0..1]of int64; b:array[1..20]of byte; c,total:int64; n,i,k,fence:integer; t:byte; procedure init; var i,j,k:integer; begin a[1,1,0]:=1;a[1,1,1]:=1; for i:=2 to n do for j:=1 to i do begin a[i,j,0]:=0; for k:=1 to j-1 do a[i,j,0]:=a[i,j,0]+a[i-1,k,1]; a[i,j,1]:=0; for k:=j to i-1 do a[i,j,1]:=a[i,j,1]+a[i-1,k,0]; end; for i:=1 to n do b[i]:=i; end; procedure check(m:integer); var i,j,ii:integer; sum:int64; begin if m=1 then begin writeln(b[1]); exit; end; if m=n then begin i:=0;sum:=0; while sum<c do begin inc(i); ii:=(i+i mod 2)div 2; sum:=sum+a[m,ii,1-i mod 2]; end; write(b[ii],' '); for j:=ii to m-1 do b[j]:=b[j+1]; c:=c+a[m,ii,1-i mod 2]-sum; t:=i mod 2; fence:=ii; check(m-1); end else begin i:=0; sum:=0; while sum<c do begin inc(i); if ((b[i]>fence)and (t=0))or ((b[i]<fence)and (t=1)) then sum:=sum+a[m,i,t]; end; write(b[i],' '); fence:=b[i]; for j:=i to m-1 do b[j]:=b[j+1]; c:=c+a[m,i,t]-sum; t:=1-t; check(m-1); end; end; begin readln(k); for i:=1 to k do begin readln(n,c); init; check(n); end; end. Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator