需求

思路分析

代码实现
package com.h.递归.八皇后回溯;import java.util.ArrayList;public class Test { //存放所有结果 public static ArrayList<Integer[]> checkerBoards = new ArrayList<>(); //棋盘 static int[] array = new int[8]; //打印棋盘 private static void soutCheckerboard(int[] checkerboard){ for (int i : checkerboard) { System.out.print(i+" "); } System.out.println(""); } //检测是否跟前面摆放的皇后冲突 public static boolean isConflict(int n){ for (int i = 0; i < n; i++) { //如果他们在同一列 , 或者在同一斜线 就返回 false if(array[i] == array[n] || Math.abs(n-i) == Math.abs(array[n] - array[i])){ return false; } } return true; } //运行 public static void run(int n){ //放完退出 if (n == 8){ soutCheckerboard(array); return; } for (int i = 0; i < 8; i++) { array[n] = i; /* 判断是否与上一个皇后冲突 不冲突: 开始放置下一个皇后 冲突: 继续for循环 , 将皇后放置下一个位置 */ if (isConflict(n)) { run(n+1); } } }; public static void main(String[] args) { Test test = new Test(); test.run(0); }}