0

Backtracking

Опубликовал: ColeaДата: 19.01.2017-21:16
1.Sa se plaseze pe o tabla de sah 8 dame astfel incat sa nu se atace reciproc.Sa se genereze toate solutiile.

Comentariu:

Pe fiecare linie trebuie sa stea o singura dama.Procedura pune_dama are ca parametru linia pe care trebuie sa se aseze o dama astfel incat san u fie atacata de damele pozitionate anterior.Pentru fiecare pozitie corecta gasita,procedura se autoapeleaza pentru linia urmatoare.



program dame;

const nmax=20;

var n,i,j:byte;

a:array[1..nmax] of 0..nmax;

nrs:byte;

procedure afis;

var i,j:byte;

begin

for i:=1 to n do begin

for j:=1 to n do

if a[i]=j then write(‘* ‘);

else write(‘0 ‘);

writeln

end;

nrs:=nrs+1;

end;

procedure pune_dama(x:byte);

var I,j,:byte;v:boolean;

begin

if x>n then afis else for i:=1 to n do

begin

v:=true;

for j:=1 to x-1 do

if a[j]=I or abs(j-x)=abs(a[j]-i) then

v:=false;

if v then begin

a[x]:=I;

pune_dama(x+1);

end;

end;

end;

begin

write(‘introduceti dimensiunea tablei de sah:’);readln(n);

nrs:=0;

pune_dama(1);

writeln(‘numarul de solutii :’,nrs);

end.



Теги: Backtracking
Всего комментариев: 0
avatar
Яндекс.Метрика Наверх