Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

为什么COMPILE ERROR?

Posted by cuiaoxiang at 2003-07-02 11:04:08 on Problem 1037
程序在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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator