【数据范围】
1<=N<=13
代码如下: 经典搜索的进化版。。
var
a,b,c:array[-12..20]of boolean;
n,i,j,ans,sum,k:longint; ch:char;
procedure dfs(dep:longint);
var i,j:longint;
begin
if k>ans then begin ans:=k; sum:=1; end
else if k=ans then inc(sum);
for i:=dep to n do
for j:=1 to i do
if (not a[i])and(not b[j])and(not c[i-j])
then begin
a[i]:=true;
b[j]:=true;
c[i-j]:=true;
inc(k);
dfs(i+1);
a[i]:=false;
b[j]:=false;
c[i-j]:=false;
dec(k);
end;
end;
begin
assign(input,'queen.in');reset(input);
assign(output,'queen.out');rewrite(output);
readln(n);
for i:=1 to n do
begin
for j:=1 to i do
begin
read(ch);
if ch='*' then begin a[i]:=true; b[j]:=true; c[i-j]:=true; end;
end;
readln;
end;
sum:=1;
ans:=-maxlongint;
dfs(1);
writeln(ans);
writeln(sum);
close(input);
close(output);
end.