今天做了一道八數碼,完全沒有bfs的思路,還是請大佬點通了以下,才知道這跟bfs沒有什麼區別之所以要把難題劃掉,是因為發現這根本是一道水題,對,沒錯,沒有你想的那麼難
首先給你的乙個數,就是八數碼的排列,也就是\(0\sim8\)的全排列,然後你需要搜尋他怎樣移動。
然後我們需要判重了,判重的方法有很多,可以用hash,但是你取模藥珂學。
然後這就是hash衝突的**
然後就是**了,這裡判重我用的set
#include#include#include#include#include#includeusing namespace std;
sets;
const int tom = 123804765;
struct edge
; edge(int a,int b,int c,int d)
}e[100];
queueq;
int n;
int dx[4]=;
int dy[4]=;
int num[4][4],tx,ty;
int main()
q.push(edge(tx,ty,fi,0));
s.insert(fi);
if(fi==tom)
while(!q.empty())
if(k==tom)}}
}
八數碼難題
在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是 給出一種初始布局 初始狀態 和目標布局 為了使題目簡單,設目標狀態為123804765 找到一種最少步驟的移動方法,實現從初始布局到目標布局的轉變。輸入格...
八數碼難題
yours和zero在研究a 啟發式演算法.拿到一道經典的a 問題,但是他們不會做,請你幫他們.問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是 給出一種初始布局 初始狀態 和目標布局 為了使題...
1225 八數碼難題
時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解檢視執行結果 description yours和zero在研究a 啟發式演算法.拿到一道經典的a 問題,但是他們不會做,請你幫他們.問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留...