首页 > 试题广场 >

n 后问题回溯算法 (1) 用二维数组A[N

[问答题]

n皇后问题回溯算法

(1) 用二维数组A[N][N]存储皇后位置,若第i行第j列放有皇后,A[i][j]为非0,否则值为0

(2) 分别用一维数组M[N]L[2*N-1]R[2*N-1]表示竖列、左斜线、右斜线是否放有棋子,有则值为1,否则值为0

for(j=0;j<N;j++)

if( 1 ) /* 安全检查*/

{ A[i][j]=i+1; /* 放皇后*/

2

if(i==N-1) 输出结果;

else 3 ; /*试探下一行*/

4 /*去皇后*/

5 ;

}

n皇后问题回溯算法
(1) !M[j]&&!L[i+j]&&!R[i-j+N]
(2) M[j]=L[i+j]=R[i-j+N]=1;
(3) try(i+1,M,L,R,A)
(4) A[i][j]=0
(5) M[j]=L[i+j]=R[i-j+N]=0
发表于 2017-07-31 14:57:34 回复(0)