正文

整理我以前的PASCAL源程序-八皇后问题(1)递归算法2010-08-20 18:44:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/jtchang/51685.html

分享到:

  八皇后问题是一个经典的问题。从解问题中产生出很多种经典的算法。下面是递归算法:   const  N=8; type      queentype=array[1..N] of integer; var    x,y:queentype;    sum: longint;   function place(k: integer):boolean; var    i: integer; begin     for i:=1 to k-1 do        if (k-i=abs(x[k]-x[i])) or (x[k]=x[i]) then          begin              place:=false;              exit;          end;      place:=true; end;   procedure PrintChessboard; var     i,j:integer; begin     writeln('No. ',sum, ' :');     for i:=1 to N do       begin           for j:=1 to N do                if j=x[i] then write('Q':2)                    else write('.':2);            writeln;       end;     readln; end;   procedure backtrack(k: integer); var    i: integer; begin     if k>N then        begin            sum:=sum+1;            PrintChessboard;            exit;        end;      for i:=1 to N do        begin            x[k]:=i;            if place(k) then backtrack(k+1);        end; end;   BEGIN     sum:=0;     backtrack(1);     writeln('Sum = ',sum); END.  

阅读(1456) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册