激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java使用遞歸回溯完美解決八皇后的問題

Java使用遞歸回溯完美解決八皇后的問題

2022-03-10 13:42葉綠體不忘呼吸 Java教程

這篇文章主要介紹了Java基于循環遞歸回溯實現八皇后問題算法,結合具體實例形式分析了java的遍歷、遞歸、回溯等算法實現八皇后問題的具體步驟與相關操作技巧,需要的朋友可以參考下

八皇后問題

八皇后問題,是一個古老而著名的問題,是回溯算法的典型案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即:任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種擺法。

解決思路

①第一個皇后先放第一行第一列。

②第二個皇后放在第二行第一列、然后判斷是否OK,如果不0K, 繼續放在第二列、第三列、依次把所有列都放完,找到一個合適。

③繼續第三個皇后, 還是第一列、第二列…直到第8個皇后也能放在一個不沖突的位置,算是找到了一個正確解。

④當得到一個正確解時,在棧回退到上一個棧時,就會開始回溯,即將第一個皇后,放到第一列的所有正確解,全部得到。

⑤然后回頭繼續第-一個皇后放第二列,后面繼續循環執行①②③④的步驟。

代碼實現

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/**
 * @Author: Yeman
 * @Date: 2021-10-31-15:48
 * @Description:
 */
public class Queue8 {
    int max = 8; //8個皇后
    int[] arr = 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種解法\n",count);
        System.out.printf("一共判斷了%d次",judgeCount);
    }
 
    //用來放置第n個皇后
    private void check(int n){
        if (n == max){ //n為8相當于是第九個皇后了,說明已經全部放好了
            print();
            return;
        }
        for (int i = 0; i < arr.length; i++) {
            arr[n] = i;
            if (judge(n)){ //不沖突
                check(n+1);
            }
        }
    }
 
    //用來第n個皇后判斷與前面的所有皇后是否沖突
    private boolean judge(int n){
        judgeCount++;
        for (int i = 0; i < n; i++) {
            //是否同列同斜線
            if (arr[i] == arr[n] || Math.abs(arr[i]-arr[n]) == Math.abs(i-n)){
                return false;
            }
        }
        return true;
    }
 
    //輸出每一種放法
    private void print(){
        count++;
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
    }
}

運行結果

(截取部分)

Java使用遞歸回溯完美解決八皇后的問題

到此這篇關于Java使用遞歸回溯完美解決八皇后的問題的文章就介紹到這了,更多相關Java 遞歸回溯內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/m0_46653805/article/details/121065552

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 黄色毛片免费看 | 日韩精品久久久久久久九岛 | 中国老女人一级毛片视频 | 精品国产一区二区三区久久久 | 久草手机在线 | 精品一区二区电影 | 亚洲一级片在线观看 | 欧美一级欧美 | 精品成人av一区二区在线播放 | 最新中文字幕免费视频 | 91午夜少妇三级全黄 | 成年人黄色免费网站 | a视频网站| 欧美成人国产va精品日本一级 | 天天干天天透 | 在火车上摸两乳爽的大叫 | 欧美亚洲国产日韩 | 国产精品视频在 | 欧美精品v国产精品v日韩精品 | 91高清免费在线观看 | 久久精品国产亚洲aa级女大片 | 成人在线视频在线观看 | 国产精品一品二区三区四区18 | 亚洲成人黄色片 | 视频一区 在线 | 国产精品久久久久久久久久久久久久久久 | 国产亚洲精品久久久久久久久 | 欧美aaaaa一级毛片在线 | 国产成人综合在线观看 | 在线播放的av网站 | 成人永久免费视频 | 欧美亚洲国产一区二区三区 | 精品成人久久久 | 欧美大胆xxxx肉体摄影 | 欧美综合在线观看 | 视频一区二区在线播放 | 毛片视频网站在线观看 | 精品成人av一区二区在线播放 | 在线天堂资源 | 国产成人自拍视频在线 | 在线播放污 |