Отримання знань
дистанційна підтримка освіти школярів
Тут ви можете виконати завдання чи задати питання по змiсту цього уроку.
Магденко Андрій (magduch) 2012-11-15 12:56:17
program graph; var n,a,b,s: integer; sh,kr,pr:array [0..100]of integer; flag:boolean; procedure inp; var i,j: integer; begin assign (input, '7.dat'); reset (input); read(a,b,n); close (input); end; procedure put; var i,k:integer; begin k:=0; sh[0]:=0; i:=1; repeat k:=pr[k]; sh[i]:=k; i:=i+1; until k=n; end; procedure main; var i,w:integer; begin for w:=0 to n do begin kr[w]:=-1; pr[w]:=-1; end; s:=0; kr[n]:=0; repeat flag:=false; for i:=0 to n do begin if kr[i]=s then begin if ((i+a)in[0..n])and (kr[i+a]=-1) then begin kr[i+a]:=s+1; pr[i+a]:=i; flag:=true; end; if ((i-a)in[0..n])and (kr[i-a]=-1) then begin kr[i-a]:=s+1; pr[i-a]:=i; flag:=true; end; if ((i+b)in[0..n])and (kr[i+b]=-1) then begin kr[i+b]:=s+1; pr[i+b]:=i; flag:=true; end; if ((i-b)in[0..n])and (kr[i-b]=-1) then begin kr[i-b]:=s+1; pr[i-b]:=i; flag:=true; end; end; end; s:=s+1; until (kr[0]<>-1) or (flag=false); if kr[0]=-1 then s:=-1 else begin s:=kr[0]; put; end; end; procedure out; var i:integer; begin assign (output, '7.sol'); rewrite (output); if s=-1 then write(s) else begin for i:=0 to s do write(sh[i],' '); close(output); end; end; Begin Inp; Main; Out; end. |
Коменчук Ірина Євгенівна (sunn) 2012-11-29 12:40:21
program graph; var m,p,xk,yk,xf,yf,rez: integer; pp:array [1..100,1..2] of integer; a:array [1..10,1..10] of integer; flag:boolean; procedure inp; var i,j: integer; begin assign (input, '8.dat'); reset (input); read(m,p); for i:=1 to p do begin for j:=1 to 2 do begin read(pp[i,j]); end; end; read(xk,yk,xf,yf); close (input); end; procedure farba; var i,rd,st:integer; begin for i:=1 to p do begin rd:=pp[i,1]; st:=pp[i,2]; a[rd,st]:=-2; if (rd>1)and (st>1) then a[rd-1,st-1]:=-2; if (rd>1)and (st end; end; procedure main; var i,s,j:integer; begin for i:=1 to m do begin for j:=1 to m do begin a[i,j]:=-1; end; end; farba; a[xk,yk]:=0; s:=0; repeat flag:=false; for i:=1 to m do begin for j:=1 to m do begin if a[i,j]=s then begin if (i>1)and(j>1)and (a[i-1,j-1]=-1) then begin a[i-1,j-1]:=s+1; flag:=true; end; if (i>1)and (a[i-1,j]=-1) then begin a[i-1,j]:=s+1; flag:=true; end; if (i>1)and(j a[i-1,j+1]:=s+1; flag:=true; end; if (j>1)and (a[i,j-1]=-1) then begin a[i,j-1]:=s+1; flag:=true; end; if (j a[i,j+1]:=s+1; flag:=true; end; if (i then begin a[i+1,j-1]:=s+1; flag:=true; end; if (i a[i+1,j]:=s+1; flag:=true; end; if (i a[i+1,j+1]:=s+1; flag:=true; end; end; end; end; s:=s+1; until (a[xf,yf]>0) or (flag=false); rez:=a[xf,yf]; end; procedure out; var i:integer; begin assign (output, '8.sol'); rewrite (output); write(rez); close(output); end; Begin Inp; Main; Out; end. |
В системі:
гості - (1); користувачі -
(0)