| ||||||||||
| 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 | |||||||||
Re:谁能告诉我程序哪里不对,小妹将以身相许In Reply To:谁能告诉我程序哪里不对,小妹将以身相许 Posted by:Kali at 2005-06-17 21:34:54 > 初学几天,请gg多多指教!
>
> const maxn =50;
>
> var sd :array[1..maxn,1..4]of integer;
> p :array[1..maxn,1..2]of integer;
> mp :array[1..maxn,1..maxn]of boolean;
> cvr :array[1..maxn]of boolean;
> lnk :array[1..maxn]of integer;
> n,stp :integer;
>
> procedure read_in;
> var i:integer;
> begin
> readln(n); if n=0 then halt;
> for i:=1 to n do readln(sd[i,1],sd[i,2],sd[i,3],sd[i,4]);
> for i:=1 to n do readln(p[i,1],p[i,2]);
> end;
>
> function btw(a,i,j:integer):boolean;
> begin
> btw:=(i<a) and (a<j);
> end;
>
> procedure build_graph;
> var i,j:integer;
> begin
> fillchar(mp,sizeof(mp),0);
> for i:=1 to n do
> for j:=1 to n do
> mp[i,j]:=btw(p[i,1],sd[j,1],sd[j,2]) and btw(p[i,2],sd[j,3],sd[j,4])
> end;
>
> function find(k:integer):boolean;
> var i,q:integer;
> begin
> find:=true;
> for i:=1 to n do if mp[k,i] and not cvr[i] then begin
> cvr[i]:=true;
> q:=lnk[i]; lnk[i]:=k;
> if (q=0) or find(q) then exit;
> lnk[i]:=q;
> end;
> find:=false;
> end;
>
> procedure max_match;
> var i,q,w:integer;
> begin
> fillchar(lnk,sizeof(lnk),0);
> for i:=1 to n do begin
> fillchar(cvr,sizeof(cvr),0);
> find(i);
> end;
> inc(stp);
> writeln('Heap ',stp);
> w:=0;
> for i:=1 to n do begin
> q:=lnk[i]; lnk[i]:=0;
> mp[q,i]:=false;
> fillchar(cvr,sizeof(cvr),0);
> if not find(q) then begin
> lnk[i]:=q;
> inc(w); if w>1 then write(' ');
> write('(',chr(i+64),',',lnk[i],')');
> end;
> mp[q,i]:=true;
> end;
> if w=0 then write('none');
> writeln;
> end;
>
> begin
> stp:=0;
> repeat
> read_in;
> build_graph;
> max_match;
> writeln;
> until false;
> end.
不知小妹可好
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator