数据结构:回溯--解决八皇后问题
生活随笔
收集整理的這篇文章主要介紹了
数据结构:回溯--解决八皇后问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
public class Queue8 {int max = 8;int count = 1;// 定義數組,保存皇后放置位置的結果,比如arr = {0,4,7,5,2,6,1,3}int[] arr = new int[max];public static void main(String[] args) {Queue8 queue8 = new Queue8();for(int i=0; i<queue8.max; i++) {queue8.arr[0] = i;queue8.check(1);}}private void check(int n){if(n == max){print();count++;return;}// 依次放入皇后,并判斷是否沖突for(int i=0; i<max; i++){arr[n] = i;if(judge(n)){ // 不沖突check(n+1);}}}// 當我們放置第n個皇后,就去檢測該皇后是否和前面已經擺放的皇后沖突private boolean judge(int n){for (int i = 0; i < n; i++) {// arr[i] == arr[n]表示在同一列, Math.abs(n-i) == Math.abs(arr[n]-arr[i]))表示同一斜線if(arr[i] == arr[n] || (Math.abs(n-i) == Math.abs(arr[n]-arr[i]))){return false;}}return true;}private void print(){System.out.printf("count="+count +" ");for (int i = 0; i < 8; i++) {//System.out.print("count="+count + " "+arr[i] + " ");System.out.print(arr[i] + " ");}System.out.println();} }?
總結
以上是生活随笔為你收集整理的数据结构:回溯--解决八皇后问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计模式:命令模式(Command Pa
- 下一篇: 设计模式:访问者模式(Visitor P