時限: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還要考慮時間複雜度,空間複雜度問題,不過一般空間複雜度都沒太大的問題。那麼為什麼這裡說不能做對?這裡參考書上...