Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program skakac;
- //
- type niz = array[1..8] of integer;
- matrica= array[1..8] of niz;
- var m,n,i,j,k,l,broj,brres,ppm,ppn:integer;
- pv,pk:niz;
- t: matrica;
- 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 write(a[i,j]:4);writeln;writeln;
- end;
- readln;
- 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:=1 to 8 do
- if Utabli(v+pv[l],k+pk[l])
- then if t[v+pv[l],k+pk[l]]=0
- then b:=b+1;
- BrojSlPolja:=b;
- end;
- procedure razmjena (var a,b:integer);
- var t:integer;
- begin t:=a;a:=b;b:=t;
- end;
- procedure skakac(v,k,broj:integer);
- var l,l1:integer;red,bsp:niz;
- begin
- broj:=broj+1;
- t[v,k]:=broj;//stampamatrice(8,t);
- if broj<64
- then
- begin
- if brojSlPolja(ppm,ppn)>0 then
- begin
- for l:=1 to 8 do
- begin
- red[l]:=l;bsp[l]:=0;
- if Utabli(v+pv[l],k+pk[l])
- then if t[v+pv[l],k+pk[l]]=0
- then bsp[l]:=BrojSlPolja(v+pv[l],k+pk[l]);
- end ;
- for l:=1 to 7 do
- 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;
- for l:=1 to 8 do
- begin
- if Utabli(v+pv[red[l]],k+pk[red[l]])
- then if t[v+pv[red[l]],k+pk[red[l]]]=0
- then skakac(v+pv[red[l]],k+pk[red[l]],broj);
- end;
- end;
- t[v,k]:=0;
- end
- else
- begin
- brres:=brres+1;
- writeln(' Resenje ',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:=0;brres:=0;ppm:=m;ppn:=n;
- skakac(m,n,broj);
- readln;
- end.
Add Comment
Please, Sign In to add comment