搜索
查看: 384|回复: 0
打印 上一主题 下一主题

八皇后问题(Pascal)

[复制链接]
跳转到指定楼层
楼主
发表于 2017-6-29 18:36:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
八皇后问题
program ex_6_2;
const
  row1=8;
  col1=8;
var
  count:longint;
  maps:array[0..row1,0..col1] of longint;
functionisok(x,y:longint):boolean;
var
  i,j:longint;
begin
  for i:=0 to row1-1 do
    begin
      for j:=0 to col1-1 do
        begin
          if (i=x) or (j=y) or (i-j=x-y) or(i+j=x+y) then
            begin
              if maps[i,j]=8 then
                begin
                  exit(false);
                end;
            end;
        end;
    end;
  exit(true);
end;
procedure printqueen;
var
  i,j:longint;
begin
  writeln;
  writeln;
  inc(count);
  writeln('Step ',count,' : ');
  for i:=0 to row1-1 do
    begin
      for j:=0 to col1-1 do
        begin
          write(maps[i,j],' ');
        end;
      writeln;
    end;
end;
procedureputqueen(row:longint);
var
  i,j:longint;
begin
  if row=row1 then
    begin
      printqueen;
      exit;
    end;
  for i:=0 to col1-1 do
    begin
      if isok(row,i) then
        begin
          maps[row,i]:=8;
          putqueen(row+1);
          maps[row,i]:=0;
        end;
    end;
end;
begin
  assign(output,'eightqueen.out');
    rewrite(output);
  putqueen(0);
  close(output);
end.

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表