bcdh.net
当前位置:首页 >> N皇后问题(pAsCAl)DFS ! 重在注释!! >>

N皇后问题(pAsCAl)DFS ! 重在注释!!

程序(PASCAL) const max=8; var i,j:integer; a:array[1..max] of 0..max; {放皇后数组} b:array[2..2*max] of boolean;{/对角线标志数组} c:array[-(max-1)..max-1] of boolean; {\对角线标志数组} col:array[1..max] of boolean; {列标志数...

〖问题描述〗 在一个8×8的棋盘里放置8个皇后,要求每个皇后两两之间不相"冲"(在每一横列竖列斜列只有一个皇后)。 〖问题分析〗(聿怀中学吕思博) 这道题可以用递归循环来做,分别一一测试每一种摆法,直到得出正确的答案。主要解决以下几个问题...

{n皇后问题,递归解法,优化解法}const n=4; {n为皇后个数,在程序中为常数,编译前请调整}varb:array[1..n,1..n] of boolean;i,j:integer;sum:longint;procedure next(m:integer); {m表示列,从第一列开始找,直到第n列}vari:integer;p,q:intege...

做法就是深搜,逐行枚举每个皇后的位置,然后用数组记录每列,每个斜线是否有皇后存在以判断当前的位置是否能够放皇后。代码我去写一下,等会补充过来。。。

var a:array[1..81] of integer; b:array[1..81] of boolean; n,i:integer; function check (c:integer):boolean; var i,j:integer; begin for i:=1 to 81 do for j:=i+1 to 81 do if abs(i-j)=abs(a[i]-a[j]) then begin c:=0;exit;end; c:=1;e...

program tt; var a:array [1..100] of integer; b,c,d:array [-100..200] of integer; t,i,j,k:integer; procedure print; begin t:=t+1; write(t,' '); for k:=1 to n do write(a[k],' '); writeln; end; procedure try(i:integer); var j:inte...

八皇后是经典的回溯问题,先放代码: program ex1; var a:array[1..100]of integer; b,c,d:array[-100..100]of boolean; n,i,j,k:integer; procedure try(k:integer); var i:integer; begin if k>n then begin for j:=1 to n do write(a[j],' ')...

const n=4; type stack=array[1..n] of integer; var i1,i2,i3,i4:integer; s:stack; function check:boolean; var i,j:integer; begin for i:=1 to n-1 do for j:=i+1 to n do if (s[i]=s[j]) or (s[i]-i=s[j]-j) or (s[i]+i=s[j]+j) then begi...

网站首页 | 网站地图
All rights reserved Powered by www.bcdh.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com