在8X8空棋盘上摆放八个皇后,并使其中任意两个皇后不能在同一行或同一列或同一对角线
代码:
package test;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;
public class Queen {
int[] a = new int[8];
int[] b = new int[15];
int[] c = new int[15];
int[][] Queen = new int[8][8];
void next(int i) {
for (int j = 0; j < 8; j++) {
if (a[j] == 0 && b[i + j] == 0 && c[i - j + 7] == 0) {
a[j] = b[i + j] = c[i - j + 7] = 1;
Queen[i][j] = 1;
if (i < 7)
next(i + 1);
else {
String output = new String();
for (int m = 0; m < 8; m++) {
for (int n = 0; n < 8; n++)
output += " " + Queen[m][n] + " ";
output += "\n";
}
JTextArea outputArea = new JTextArea();
outputArea.setText(output);
JOptionPane.showMessageDialog(null, outputArea,
"One possible distribution",
JOptionPane.INFORMATION_MESSAGE);
}
a[j] = b[i + j] = c[i - j + 7] = Queen[i][j] = 0;
}
}
}
public static void main(String args[]) {
Queen one = new Queen();
one.next(0);
System.exit(0);
}
}
分享到:
相关推荐
在8×8的国际象棋棋盘上放置8个皇后,要求任意两个皇后不能在同一行、同一列或同一条对角线上。要求用递归和非递归算法实现。打印所有可能情况。
1. **行、列和对角线**:在八皇后问题中,皇后之间不能处于同一行、同一列或同一条对角线上,这意味着在每行和每列都只能放置一个皇后,并且任意两个皇后不能处于同一条对角线上。 2. **布局方案**:不同的皇后放置...
这个问题的基本设定是在一个8×8的国际象棋棋盘上放置八个皇后,使得任意两个皇后都无法在同一行、同一列或对角线上互相攻击。在编程领域,解决八皇后问题通常被用作教学示例,因为它涉及到了回溯法和递归等核心概念...
八皇后问题,即在8×8 的国际象棋棋盘上放置8 个皇后,要求任意两个皇后不能 在同一行、同一列或同一条对角线上。求出如此放置方法的种数。 一种解决问题的思路是一行放置皇后,如果当前放置的皇后与前面的皇后不 ...
它是由19世纪的数学家鲁道夫·冯·莱昂哈德·欧拉提出的,旨在在8×8的棋盘上摆放8个皇后,使得任意两个皇后都不能在同一行、同一列或对角线上。这个问题有助于理解和实践回溯法、深度优先搜索等算法。 MFC...
要求在国际象棋的棋盘上放置八个皇后,使其不能相互攻击,即任意两个皇后不能处于 棋盘的同一行、同一列和同一条对角线上。试问有多少种放法? 基本思想是:先把皇后放在(0,0)位置,然后把1号皇后放在(1,j)...
(N皇后) 在NXN格国际象棋的棋盘上放置N个皇后,使其不能互相攻击,即任意两个皇后不能处在棋盘的同一行,同一列,同一斜线上,编程求出有多少种摆法?(2) 输入输出:用户输入N,程序输出摆法数目。
要求在国际象棋的棋盘上放置八个皇后,使其不能相互攻击,即任意两个皇后不能处于 棋盘的同一行、同一列和同一条对角线上。试问有多少种放法? 基本思想是:先把皇后放在(0,0)位置,然后把1号皇后放在(1,j)...
接下来,八皇后问题是一个经典的回溯法问题,要求在8×8的棋盘上放置8个皇后,使得任意两个皇后都不能在同一行、同一列或同一对角线上。Python实现中,我们通常使用一个数组来表示棋盘,然后通过回溯法尝试不同的...
要求在国际象棋的棋盘上放置八个皇后,使其不能相互攻击,即任意两个皇后不能处于 棋盘的同一行、同一列和同一条对角线上。试问有多少种放法? 基本思想是:先把皇后放在(0,0)位置,然后把1号皇后放在(1,j)...
在一个在n×n的棋盘上放n个皇后,要求任意两个皇后都不在棋盘的同一行、列和对角线上(即按国际象棋规则,使得皇后间互不攻击),试给出一个递归算法求出n个皇后全部的放置方法。 算法设计: 给定n×n的棋盘(假定n=4...
该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在...
在这个游戏里会有一个 9*9 的国际象棋棋盘,我们可以在在国际象棋的棋盘上放置皇后,使其不能相互攻击,即任意两个皇后不能处于棋盘的同一行、同一列和同一条对角线上。 1. 如果一方放置皇后时位于其他皇后的攻击...
这个问题要求在8x8的棋盘上放置8个皇后,使得任意两个皇后都不能在同一行、同一列或同一条对角线上。这需要我们考虑如何有效地存储和检查皇后的位置。一种常见的方法是使用一维数组,数组的每个元素代表一行,其值...
八皇后问题要求在8×8的棋盘上放置8个皇后,使得任意两个皇后都不能在同一行、同一列或同一斜线上。这是一个典型的约束满足问题,通常采用回溯法来解决。回溯法是一种试探性的解决问题方法,当尝试一种解法无效时,...
八皇后问题是一个经典的算法问题,要求在8×8的国际象棋棋盘上放置八个皇后,使得它们不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上。这个问题可以用递归回溯法来解决,而JavaScript作为一种...
它的问题核心在于:如何在8×8的棋盘上放置8个皇后,使得任意两个皇后都无法互相攻击,即不存在同一行、同一列或同一对角线上的两个皇后。这个问题不仅展示了编程中的回溯算法,也体现了问题解决的策略和逻辑思维。 ...
八皇后问题是一个经典的回溯算法问题,源自国际象棋,目标是在8×8的棋盘上摆放8个皇后,使得任意两个皇后都无法通过同一行、同一列或同一斜线互相攻击。这个问题涉及到计算机科学中的算法设计、递归以及深度优先...
这种算法的核心思想是通过多层循环来尝试所有可能的皇后放置方案,并且在每一种方案中检查是否满足问题的约束条件(即任意两个皇后不能位于同一行、同一列或同一条斜线上)。 1. **算法步骤** - 使用8层嵌套循环,...