正文

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

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

分享到:

const      N=8; var      k: integer;      x: array[1..N] of integer;      sum: longint; procedure PrintChessboard; var     i,j:integer; begin     writeln;     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; function place(k: integer): boolean; var    j:integer; begin    for j:=1 to k-1 do      if (k-j=abs(x[k]-x[j])) or (x[k]=x[j]) then        begin             place:=false;             exit;        end;     place:=true; end; begin     x[1]:=0;   k:=1;  sum:=0;     while k>0 do      begin         x[k]:=x[k]+1;         while (x[k]<=N)  and not place(k) do x[k]:=x[k]+1;         if x[k]<=N then            if k=N then                begin                    sum:=sum+1;                    PrintChessboard;                end            else               begin                  k:=k+1;                  x[k]:=0;               end         else  k:=k-1;      end;      writeln;      writeln('Sum: ',sum); end.

阅读(1332) | 评论(0)


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

评论

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