您的位置:首页 > 编程语言

高级语言反汇编程序的函数调用过程

2011-12-21 12:44 232 查看
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();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: