八數碼難題

2022-02-24 16:26:56 字數 898 閱讀 7833

今天做了一道八數碼,完全沒有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的某一數字。棋盤中留...