Cod sursa(job #275869)

Utilizator oanamusatMusat Oana oanamusat Data 10 martie 2009 18:32:59
Problema Dame Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.92 kb
program n_dame;
var st:array [0..25] of integer;
		sol,n:integer;
    m:array [1..25,1..25] of char;
    f1:text;

procedure tipar;
var i,j:integer;
begin
sol:=sol+1;
for i:=1 to n do
	for j:=1 to n do
  	m[i,j]:='*';
for i:=1 to n do
	m[i,st[i]]:='D';
for i:=1 to n do
	begin
	for j:=1 to n do
  	write(m[i,j]);
  writeln;
  end;
writeln;
readln;
end;

function valid(k:integer):boolean;
var i:integer;
begin
valid:=true;
for i:=1 to k-1 do
	if (st[i]=st[k]) or (abs(st[k]-st[i])=k-i) then
  	valid:=false;
end;

procedure back(k:integer);
var i:integer;
begin
{if sol=0 then
	begin         }
  for i:=1 to n do
	  begin
    st[k]:=i;
    if valid(k) then
  	  if k=n then
    	  tipar
      else
    	  back(k+1)
    end;
{  end;           }
end;

begin
assign(f1,'dame.in');
reset(f1);
readln(f1,n);
close(f1);
sol:=0;
back(1);
writeln('Sunt ',sol,' solutii!');
readln;
end.