Problem:
Write an algorithm to print all ways of arranging eight queens on a chess board so that none of them share the same row, column or diagonal.
My Code:
________________________________________________________________
package alg;
import java.util.Stack;
public class EightQueens {
public static final int N = 8;
static class Queen {
public int x, y;
Queen(int x, int y) {
this.x = x;
this.y = y;
}
}
static void findAllResult() {
Stack<Queen> s = new Stack<Queen>();
for(int i = 0; i<N; i++){
Queen q = new Queen(0,i);
s.push(q);
locateNextQueen(1, s);
}
}
static void locateNextQueen(int row, Stack<Queen> queens){
if(row == N){
System.out.println("Find one result:");
for(Queen q : queens){
System.out.println("\t(" + q.x + "," + q.y + ")");
}
return;
}
for(int y = 0; y < N; y++){
boolean valid = true;
for(Queen queen : queens){
if( row == queen.x || y == queen.y ||
(queen.y - y == queen.x - row) ||
(queen.y - y == row - queen.x) ){
valid = false;
break;
}
}
if(valid == false){
continue;
}else {
Queen q = new Queen(row, y);
queens.push(q);
locateNextQueen(row+1, queens);
queens.pop();
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
findAllResult();
}
}
分享到:
相关推荐
n queen problem source code in working
N皇后问题,解决N皇后问题,详细的C代码
EACH INDIVIDUAL:- [1*8] 其中每列值告诉皇后在该特定列中的位置 最终解决方案:-每一行在“解决方案”矩阵中给出一个唯一的解决方案 它具有非常基本但有效的选择、交叉和变异功能。 皇后在开始时随机放置。 我是为 ...
可以实现N皇后的问题 运用简易算法 大大降低了耗时
使用Hopfield人工神经网络解决"N-皇后"问题
n皇后问题n皇后问题n皇后问题n皇后问题n皇后问题
Practice 1 Date: Monday, March 18th, 2013 We highly encourage being environment friendly and trying all problems on your own. ...Solve the 8-Queen problem using back-tracking algorithm.
8皇后一直是C语言中的经典问题,本代码利用回溯法解决了N皇后问题
**N皇后问题** N皇后问题是一个经典的计算机编程问题,它要求在n×n的棋盘上放置n个皇后,使得任何两个皇后都不会在同一行、同一列或同一对角线上。这个问题是回溯算法的一个经典应用,它展示了如何通过试探性的...
C#,动态规划(DP)N皇后问题(N Queen Problem)的回溯(Backtracking)算法与源代码 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的...
标题中的"New-Text-Document-(5).rar_queen"暗示了这是一个关于“皇后问题”(8 Queen Problem)的Visual C++编程项目。8皇后问题是一个经典的计算机科学问题,源于国际象棋,目标是在8×8的棋盘上放置8个皇后,使得...
八皇后问题 Eight Queen's Problem八皇后问题演示系统
n queen problem that gives solution
8 Queen's problem is an ancient and famous, the problem is the famous 19th century mathematician Gauss 1850 : in the 8x8 grid placed on the international chess 8 Queen's, making it unable to attack ...
标题 "nqueen.rar_visual c" 指的是一个使用Visual C++实现的八皇后问题(N-Queens Problem)的程序压缩包。八皇后问题是一个经典的计算机科学问题,它的目标是在一个8x8的棋盘上放置8个皇后,使得任意两个皇后都不...
- No problem. Very soon.:没问题。很快。 - How stupid you are!:你多么愚蠢啊! - What else can I do for you, Mr Fisherman?:我还能为你做什么,渔夫先生? - Go right now, or I will punish you!:立刻...
WPF 国际象棋 棋子ChessProgrammingTest.zip 要求: You have been provided with a third-party library ...* Queen – Moves diagonally, horizontally or vertically, any distance within board boundaries
public class ChessBoard {public static int Q= 8;private int[][] board;private int[] queenPositions;public static void main(String[] args) {boolean climb = true;int climbCount = 0;while (climb) {...
- `QueenProblem.java`: 主要的Java源代码文件,包含了皇后问题的实现。 - `QueenProblem.class`: 编译后的Java字节码文件,用于运行程序。 - `solution.txt` 或 `solutions.txt`: 可能记录了所有找到的皇后问题的解...
Queen Problem 百鸡 One Hundred Chicken Problem 约瑟夫环 Josephus Problem 背包 Knapsack Problem 马踏棋盘 Horse Jump Problem Hamming Distance Number Complement 1到N有多少个1 Count One Battleships in