Pagini recente » Cod sursa (job #2718416) | Cod sursa (job #1438004) | Cod sursa (job #2389915) | Cod sursa (job #2771373) | Cod sursa (job #683304)
Cod sursa(job #683304)
program damele;
type stiva=array[1..100]of integer;
var st:stiva;
i,j,n,k:integer;
as,ev:boolean;
a:array[1..20,1..20]of integer;
f,g:text;
procedure init(k:integer;var st:stiva);
begin
st[k]:=0;
end;
procedure succesor(var as:boolean;var st:stiva;k:integer);
begin
if st[k]<n then begin
st[k]:=st[k]+1;
as:=true;
end
else as:=false;
end;
procedure valid(var ev:boolean;var st:stiva;k:integer);
var i:integer;
begin
ev:=true;
for i:=1 to k-1 do
if (st[k]=st[i])or (abs(st[k]-st[i])=abs(k-i)) then ev:=false ;
end;
function solutie(k:integer):boolean;
begin
solutie:=(k=n);
end;
procedure tipar;
var i:integer;
begin
for i:=1 to n do writeln(g,'nodul=',st[i]);
writeln(g);
end;
begin
assign(f,'dam.in');reset(f);
assign(g,'dam.out');rewrite(g);
readln(f,n);
k:=1;
init(k,st);
while k>0 do
begin
repeat succesor(as,st,k);
if as then valid(ev,st,k);
until (not as) or (as and ev);
if as then
if solutie(k) then tipar
else begin
k:=k+1;
init(k,st);
end
else k:=k-1;
end;
close(f);close(g);
end.