bfs 最少步數

2021-08-15 22:50:42 字數 933 閱讀 8932

時間限制: 1000 ms        記憶體限制: 65536 kb

提交數: 455     通過數:241 

a、b兩點的座標。

最少步數。

12 16
18 10
8
9

no因為a,b兩點是隨機輸入的,所以沒有數學規律,只能用廣度優化搜尋。

但是,它們終點一樣,所以我們可以把(1,1)看作起點,把ab看作終點,只需要一次廣度優化搜尋。

bfs主要就是佇列思想,可以用que[k][1],que[k][2]記錄從(1,1)到該點,用que[k][3]記錄最小步數。初始時,que中只有乙個元素(1,1),最小步數為0。

a陣列記錄(1,1)到每點所需要的最小步數。初始時,a[1][1]=0,除此之外的所有元素值設為-1。

約束條件:

不能越出界外。由於馬的所有可能的落腳點s均在s的範圍內,因此馬一越界就將s值賦為0,表示已經擴充套件過,到達這裡至少需要0布,但這樣可以避免馬再次落入這些界外點。

以前到達過得點,無需在到,第一次到即為最小步數。

#includeusing namespace std;

int dx[12]=,

dy[12]=;

int main()

; memset(a,0xff,sizeof(a)); //初始化a為-1

int head=0,tail=1;

int x1,y1,x2,y2;

cin>>x1>>y1>>x2>>y2;

que[1][1]=1;

que[1][2]=1;

que[1][3]=0;//初始化佇列,(1,1) 最少步數0

int x,y;do}

}}while(headreturn 0;

}

最少步數(bfs)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,...

最少步數(bfs)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,1...

最少步數 bfs樣板

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 這有乙個迷宮,有0 8行和0 8列 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1,1,0,1,1 1,0,0,0,0,1,0,0,1 1,1,0,...