递归解决问题——八皇后
Posted bingbug
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归解决问题——八皇后相关的知识,希望对你有一定的参考价值。
这是一个比较经典的算法问题了,也是用到了递归思路,采用了递归回溯法
public class Queue8 { int max = 8; int[] array = new int[max]; static int count = 0; static int judgeCount = 0; public static void main(String[] args) { Queue8 queue8 = new Queue8(); queue8.check(0); System.out.printf("一共有%d解法 ", count); System.out.printf("一共检测%d次", judgeCount); } //放置皇后 private void check(int n) { if (n == max) { print(); return; } for (int i = 0; i < max; i++) { array[n] = i; if (judge(n)) { check(n + 1); } } } //检查是否冲突 private boolean judge(int n) { judgeCount++; for (int i = 0; i < n; i++) { if (array[i] == array[n] || Math.abs(n - i) == Math.abs(array[n] - array[i])) { return false; } } return true; } //用于输出 private void print() { count++; for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } System.out.println(); } }
以上是关于递归解决问题——八皇后的主要内容,如果未能解决你的问题,请参考以下文章