資料結構學習6 使用遞迴解決8皇后問題

2021-10-19 23:43:50 字數 980 閱讀 2604

public

class

queue8

public

voidgo(

int num)

for(

int i=

0;i<

8;i++

)// 如果衝突將本行皇后後移乙個位置}}

public

boolean

judge

(int num)

}return

true;}

public

void

print()

/** * 檢查 這個點是否滿足要求

* 假定當前點和已存在點之間是否在同一條直線上

* x1-x2 = 0

* 同一列

* y1-y2 = 0

* 同一斜線

* |x1-x2| = |y1-y2|

*/public

boolean

check

(int x1,

int y1,

int x2,

int y2)

/** * 取2數相減的絕對值

*/private

intabs

(int a,

int b)

public

static

void

main

(string[

] args)

}

遞迴的時候要注意物件的引用,之前當前的行號使用乙個全域性變數記載,導致遞迴過程中不能正確的回溯到上乙個節點。

遞迴的時候一定要有乙個結束條件 否則就會造成無限遞迴,最終棧溢位。

接到乙個需求之後應該先分析需求而不是匆匆忙忙的上手,剛開始實現8皇后問題的時候看到有棋盤這個元素,然後直接定義乙個二維陣列,並初始化,後來看了韓老師的**之後發現使用一維陣列實現起來更加清晰明了。所以思路清晰是寫出乙個好的程式的前提,應該多思考。

資料結構學習5 使用遞迴解決迷宮問題

給定一張迷宮地圖和乙個迷宮入口,和出口 找到一條可以通過的道路 我們使用乙個二維陣列代表迷宮,其中 gowithdynamic方法 根據當前點和終點的位置進行動態判定4個方向的優先順序,但是針對於很多障礙物的地圖,它表現的並沒有想象中那麼好,甚至有點差 完整 public class maze pr...

資料結構學習筆記 遞迴

遞迴 乙個函式自己直接或間接呼叫自己。函式的呼叫 當在乙個函式的執行期間呼叫另乙個函式時,在執行被調函式之前,系統需要完成三間事 1 將所有的實際引數 返回位址 當被調函式完成後,接下來要執行的語句的位址 等資訊傳遞給被呼叫函式儲存。2 為被調函式的區域性變數 也包括形參 分配儲存空間。3 將控制轉...

資料結構學習筆記 遞迴 例項

part類用map存有孩子的類和資訊 數量 用string存有自己的名字name,如下 public class part 問題 通過成員函式count howmany part p 計算類物件擁有目標目標結點的數量 例如,howmany couch floor howmany couch hosp...