Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {
- kruzna putanja
- * *
- * *
- 1
- * *
- * *
- }
- program skakac;
- type
- niz=array[1..8]of integer;
- matrica=array[1..8]of niz;
- var
- broj,m,n,k,brres:integer;
- pv,pk:niz;
- t:matrica;
- procedure UnosMatrice(var n:integer; var a:matrica);
- var i,j:integer;
- begin
- write('Broj vrsta: ');
- readln(m);
- write('Broj kolona: ');
- readln(n);
- for i:=1 to n do
- begin
- for j:=1 to n do
- begin
- write('A[',i,';',j,']= ');
- readln(A[i,j]);
- writeln;
- end;
- end;
- end;
- procedure StampaMatrice(n:integer; A:matrica);
- var i,j:integer;
- begin
- writeln;
- for i:=1 to n do
- begin
- for j:=1 to n do
- begin
- write(A[i,j]:4);
- end;
- writeln;
- end;
- writeln;
- end;
- function UTabli(v,k:integer):boolean;
- begin
- UTabli:=((v>0)and(v<9))and((k>0)and (k<9));
- end;
- function BrojSlPolja(v,k:integer):integer;
- var b,l:integer;
- begin
- b:=0;
- for l:=0 to 8 do
- if UTabli(v+pv[l],k+pk[l]) then
- begin
- if t [v+pv[l],k+pk[l]]=0 then
- b:=b+1;
- end;
- BrojSlPolja:=b;
- end;
- procedure razmjena (var a,b:integer);
- var p:integer;
- begin
- p:=a;
- a:=b;
- b:=p;
- end;
- procedure skakac(v,k,broj:integer);
- var l,l1:integer;
- red,bsp:niz;
- begin
- t[v,k]:=broj;
- //StampaMatrice(8,t);
- if broj<64 then
- begin
- for l:=1 to 8 do
- begin
- red[l]:=l;
- if UTabli(v+pv[l],k+pk[l]) then bsp[l]:=BrojSlPolja(v+pv[l],k+pk[l]);
- end;
- for l:=1 to 7 do
- begin
- for l1:=l+1 to 8 do
- begin
- if bsp[l1]<bsp[l] then
- begin
- razmjena(bsp[l1],bsp[l]);
- razmjena(red[l1],red[l]);
- end;
- end;
- end;
- for l:=1 to 8 do
- begin
- if UTabli(v+pv[red[l]],k+pk[red[l]]) then
- begin
- if t [v+pv[red[l]],k+pk[red[l]]]=0 then
- skakac(v+pv[red[l]],k+pk[red[l]],broj+1);
- end;
- end;
- t[v,k]:=0;
- end
- else
- begin
- brres:=brres+1;
- writeln('Rjesenje ',brres, ' je: ');
- StampaMatrice(8,t);
- t[v,k]:=0;
- end;
- end;
- begin
- pv[1]:=-2;
- pv[2]:=-1;
- pv[3]:=1;
- pv[4]:=2;
- pv[5]:=2;
- pv[6]:=1;
- pv[7]:=-1;
- pv[8]:=-2;
- pk[1]:=1;
- pk[2]:=2;
- pk[3]:=2;
- pk[4]:=1;
- pk[5]:=-1;
- pk[6]:=-2;
- pk[7]:=-2;
- pk[8]:=-1;
- write('Koordinate pocetnog polja: ');
- readln (m,n);
- broj:=1;
- brres:=0;
- skakac(m,n,broj);
- readln;
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement