八皇后问题 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.
|