Pagini recente » Cod sursa (job #1565688) | Cod sursa (job #129259) | Cod sursa (job #1825573) | Cod sursa (job #71731) | Cod sursa (job #37066)
Cod sursa(job #37066)
program problema_damelor;
var as,ev:boolean;
n,k,i:integer;
st:array[1..1000] of integer;
f,g:text;
procedure init;
begin
st[k]:=0;
end;
procedure succesor;
begin
if st[k]<n then begin
st[k]:=st[k]+1;
as:=true;
end
else as:=false;
end;
procedure valid;
begin
ev:=true;
for i:=1 to k-1 do begin
if st[k]=st[i] then ev:=false;
if abs(k-i)=abs(st[k]-st[i]) then ev:=false;
end;
end;
function solutie(k:integer):boolean;
begin
if k=n then solutie:=true
else solutie:=false;
end;
procedure tipar;
begin
writeln(g,n);
for i:=1 to n do begin
write(g,i,' ',st[i],' ');
writeln(g);
end;
end;
begin
assign(f,'dame.in'); reset(f);
assign(g,'dame.out'); rewrite(g);
read(f,n);
k:=1;
init;
while k>0 do begin
repeat
succesor;
if as then valid;
until (not as) or (as and ev);
if as then if solutie(k) then begin
tipar;
break;
end
else begin
k:=k+1;
init;
end
else k:=k-1;
end;
close(g);
end.