n皇后

 1 program Neayo;
2 const 3 inf='queen.in'; 4 ouf='queen.out'; 5 var 6 i,j,k,n:longint; 7 line,h:array[0..11]of longint; 8 f1,f2:array[-10..25]of boolean; 9 a:array[0..11,0..11]of longint; 10 procedure init; 11 begin 12 assign(input,inf);assign(output,ouf); 13 reset(input);rewrite(output); 14 readln(n); 15 close(input); 16 end; 17 procedure go(x:longint); 18 var i,j,xi,xj:longint; 19 emp:boolean; 20 begin 21 if x=n+1 then 22 begin 23 for i:=1 to n do write(line[i],' '); 24 writeln; 25 exit; 26 end; 27 for j:=1 to n do 28 if (h[j]=0)and(not f1[x+j])and(not f2[x-j]) then 29 begin 30 f1[x+j]:=true; 31 f2[x-j]:=true; 32 line[x]:=j; 33 h[j]:=1; 34 go(x+1); 35 f1[x+j]:=false; 36 f2[x-j]:=false; 37 line[x]:=0; 38 h[j]:=0; 39 end; 40 end; 41 begin

42 init; 43 if n=1 then writeln(1); 44 if (n=2)or(n=3) then writeln(' '); 45 if n>3 then go(1); 46 close(output); 47 end.
posted @ 2012-10-12 11:11  neayo  阅读(87)  评论(0编辑  收藏  举报