八皇后算法 回溯 递归 javaITeye - 威尼斯人

八皇后算法 回溯 递归 javaITeye

2019-01-10 15:48:13 | 作者: 鸿飞 | 标签: 一个,解法,查找 | 浏览: 2536

 


          

            国际象棋棋盘                               其间 一种解法
 
 

 

算法:

1.判别 是否是 在米字形 上

2. 递归查找 下一个,没有,回来上一行,换一个方位持续查找(n 盘 n 皇后问题,一行有且之有一个方位)

 

 



 

 

代码

import java.util.concurrent.atomic.AtomicInteger;
public class EightQueue {
 public static void main(String[] args) {
 // testCheck(); 
 for (int i = 4; i i++) {
 int rows = i; //行 一排
 int cols = i; //列
 int [][] queue = new int[rows][cols];
 AtomicInteger backtrack = backtrack(queue,0,new AtomicInteger(0));
 System.out.println(i+"阶"+backtrack.get());
 static AtomicInteger backtrack(int [][] queue,int row,AtomicInteger ai){
 int rows = queue.length ;
 int cols = queue[0].length ; 
 if (row == -1) {
 return ai;
 if (row == rows) { 
 ai.getAndIncrement();
 //System.out.println("第"+ai.get()+"种解法");
 //print(queue); 
 //System.out.println();
 return backtrack(queue, row-1,ai);
 int j = 0;
 for (int i = 0 ; i rows; i++) {
 if (queue[row][i] == 1) {
 j = i+1;
 queue[row][i] = 0;
 boolean flag =false;
 for (; j cols; j++) {
 if (!flag check(row, j, queue)) {
 queue[row][j] = 1; 
 flag =true;
 if (!flag) { 
 return backtrack(queue, row-1,ai);
 return backtrack(queue, row+1,ai);
 static void print(int [][] queue){ 
 int rows = queue.length;
 int cols = queue[0].length; 
 for (int i = 0; i rows; i++) {
 for (int j = 0; j cols; j++) {
 System.out.print(queue[i][j]);
 System.out.println();
 static void testCheck(){
 int rows = 8; //行 一排
 int cols = 8; //列
 int x= 1,y =1;
 for (int i = 0; i rows; i++) {
 for (int j = 0; j cols; j++) {
 int [][] queue = new int[rows][cols];
 queue[i][j] = 1;
 boolean check = check(x, y, queue);
 System.out.print(check +" ");
 System.out.println();
// false false false true true true true true 
// false false false false false false false false 
// false false false true true true true true 
// true false true false true true true true 
// true false true true false true true true 
// true false true true true false true true 
// true false true true true true false true 
// true false true true true true true false                          
			
版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章