codevs1225 八數碼難題 bfs 雜湊

2021-08-17 05:56:19 字數 1054 閱讀 7376

題目描述 

description

yours和zero在研究a*啟發式演算法.拿到一道經典的a*問題,但是他們不會做,請你幫他們.

問題描述

在3×3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是:給出一種初始布局(初始狀態)和目標布局(為了使題目簡單,設目標狀態為123804765),找到一種最少步驟的移動方法,實現從初始布局到目標布局的轉變。

輸入描述 

input description

輸入初試狀態,一行九個數字,空格用0表示

輸出描述 

output description

只有一行,該行只有乙個數字,表示從初始狀態到目標狀態需要的最少移動次數(測試資料中無特殊無法到達目標狀態資料)

樣例輸入 

sample input

283104765

樣例輸出 

sample output

4

#include#include#include#includeusing namespace std;

struct node;

int ji[11]=,dir[4][2]=;

int zhan(char *a)

return n+1;

}int bfs(char* a,char* att);

queues;

node aa,k;

strcpy(aa.a,a);

aa.step=0;

for(int i=0;i<9;i++)

if(a[i]==9)

s.push(aa);

vis[n1]=1;

while(!s.empty())

if(!vis[n1])

}} }

return -1;

}int main()

a[9]=at[9]=0;

printf("%d\n",bfs(a,at));

return 0;

}

CodeVs 1225 八數碼難題

yours和zero在研究a 啟發式演算法.拿到一道經典的a 問題,但是他們不會做,請你幫他們.問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是 給出一種初始布局 初始狀態 和目標布局 為了使題...

codevs1225 八數碼難題

題目描述 description yours和zero在研究a 啟發式演算法.拿到一道經典的a 問題,但是他們不會做,請你幫他們.問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是 給出一種初始布...

codevs 1225 八數碼難題 題解

yours和zero在研究a 啟發式演算法.拿到一道經典的a 問題,但是他們不會做,請你幫他們.問題描述 在3 3的棋盤上,擺有八個棋子,每個棋子上標有1至8的某一數字。棋盤中留有乙個空格,空格用0來表示。空格周圍的棋子可以移到空格中。要求解的問題是 給出一種初始布局 初始狀態 和目標布局 為了使題...