演算法實驗三 (BFS 分支限界) 八數碼

2021-09-29 09:00:11 字數 930 閱讀 4417

時限:5000ms 記憶體限制:20000k  總時限:10000ms

描述在九宮格裡放在1到8共8個數字還有乙個是空格,與空格相鄰的數字可以移動到空格的位置,問給定的狀態最少需要幾步能到達目標狀態(用0表示空格):

1 2 3

4 5 6

7 8 0

輸入輸入乙個給定的狀態。

輸出輸出到達目標狀態的最小步數。不能到達時輸出-1。

輸入樣例

1 2 3

4 0 6

7 5 8

輸出樣例

#include#include#include#includeusing namespace std;

/********************/

struct state

;state start;

queueq;

mapused;

mapstep;

int walk[4][2]=

;/*******************/

int bfs();

int setinteger(state n);

state move(state now,int i);

/******************/

void init()

} start.integer=setinteger(start);

used[start.integer]=1;

step[start.integer]=0;

q.push(start);

}int setinteger(state n)

// cout<=0 && newx<3 && newy>=0 && newy<3) }

// cout

int main()

演算法實驗三 分支限界法 六數碼問題

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述現有一兩行三列的 如下 a b c d e f 把1 2 3 4 5 6六個數字分別填入a b c d e f格仔中,每個格仔乙個數字且各不相同。每種不同的填法稱為一種布局。如下 1 3 5 2 4 6 布局12 5 6 4 3...

演算法實驗三 分支限界法 獨輪車

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述獨輪車的輪子上有紅 黃 藍 白 綠 依順時針序 5種顏色,在乙個如下圖所示的20 20的迷宮內每走乙個格仔,輪子上的顏色變化一次。獨輪車只能向前推或在原地轉向。每走一格或原地轉向90度均消耗乙個單位時間。現給定乙個起點 s 和乙...

藍橋杯 BFS 八數碼問題(演算法筆記8)

題目中輸入初始狀態和目標狀態,返回最少的移動步數。這與迷宮問題的最短路勁有些許相似,但這裡更多的是一種狀態的思考,本題涉及到 康托展開 這個特殊的雜湊函式。但是,思路有了不代表能做對,因為ac還要考慮時間複雜度,空間複雜度問題,不過一般空間複雜度都沒太大的問題。那麼為什麼這裡說不能做對?這裡參考書上...