日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

八皇后问题 思路

發布時間:2025/3/17 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 八皇后问题 思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先聲明我們根據條件可以知道皇后肯定是每行都有且只有一個所以我們創建一個數組x[t]讓數組角標表示八皇后的行,用這個角標對應的數組值來確定這個皇后在這行的那一列。
我們用遞歸來做:
這問題要求皇后所在的位置必須和其他皇后的位置不在同一行、列還有 把兩個皇后看成點其|斜率|=1
所以我們就要寫這個限定條件用一個函數來實現:函數內對沒一個已經放好的皇后的位置進行判斷,所以就要有個循環。

我們既然是用遞歸來解決問題那就要把這個問題分成一個個相同的小問題來實現對吧!
這小問題是什么呢,不難發現我們要在8*8的方格里放好8個皇后那我們就要知道在8(列)*7(行)是怎么放的在有我們事先寫好的判斷函數放好最后行就搞定了;以此類推我們要知道8*7的怎么方的我們就要知道8*6是怎么樣的就好了。。。。。。
所以我們是以一行怎么放作為一個單元
那好我們就去建一個可以放好一行的函數backtrack(int t)里面的t表示是第幾行,在main函數調用的時候第一次傳進來的是0也就是從第一行開始判斷。
我們就開始寫函數體了:
?????? 沒一行有8個位置可以放每一個位置我們都要去判斷一下所以我們就用循環來搞定。
?????? 在這個循環里面我們讓x[t]=i也就是從這一行的第一個開始判斷。放好后就要去判斷
?????? 是否符合條件。如果符合條件我們就在調用這個函數本身backtrack不過穿進去的參數
?????? 是t+1也就是下一行的意思。
在進行判斷下一行之前我們要判斷一下t是不是等于8也就是已經是最后一行了,如果是最后一行了我們就可以將其進行輸出。打印8*8的矩陣(提示在寫一個函數)皇后的位置用1表示出來沒有的用0表示。

這是我自己的體會,里面可能有寫表述不當的地方要是不懂可以來問我!(第一次回答這么長的問題)

轉載于:https://www.cnblogs.com/jack204/archive/2011/10/18/2215987.html

總結

以上是生活随笔為你收集整理的八皇后问题 思路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。