NOJ1042 演算法實驗三 電子老鼠闖迷宮

2021-10-25 05:19:09 字數 1423 閱讀 4593

描述

有乙隻電子老鼠被困在如下圖所示的迷宮中。這是乙個12*12單元的正方形迷宮,黑色部分表示建築物,白色部分是路。電子老鼠可以在路上向上、下、左、右行走,每一步走乙個格仔。現給定乙個起點s和乙個終點t,求出電子老鼠最少要幾步從起點走到終點。

輸入

本題包含乙個測例。在測例的第一行有四個由空格分隔的整數,分別表示起點的座標s(x.y)和終點的座標t(x,y)。從第二行開始的12行中,每行有12個字元,描述迷宮的情況,其中』x』表示建築物,』.'表示路.

輸出

輸出乙個整數,即電子老鼠走出迷宮至少需要的步數。

輸入樣例:

2 9 11 8

************

x…x.***

x.x.xx…x

x.x.xx.***.x

x.x…x…x

x.*********x

x…x.x…x

x.***…***x

x…x…x

***.***x.x.x

******x…***

************

輸出樣例:

#include

#include

using

namespace std;

int walk[4]

[2]=

;int maze[12]

[12];

int step[12*

12];void

input()

}}intmake_new_place

(int row,

int col,

int type)

if(maze[row]

[col]!=0

)return-1

;else

return row *

12+ col;

}void

bfs(queue<

int> q,

int end_r,

int end_c)}}

}}intmain()

之前用深搜也寫過迷宮問題,不過廣搜是為了找到最短路徑,而且找到一條最優解後就可以退出。

擴充套件新結點的時候只需要判斷是否越界,撞牆,重複,如果都沒有,那麼返回行*12+列就可以得到擴充套件結點的位置。

出隊元素,擴充套件四個結點,若返回值不為-1,則入隊。

如果入隊元素的橫縱座標為目標點就返回。

這道題和其他題稍有不同,它的座標是從1開始的,這是需要注意的。

NOJ1130 演算法實驗三 polygon

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述在乙個周長為10000的圓上等距分布著n個點,即這n個點是乙個正n邊形的頂點。現在要另加m個點到圓上,新加的m個點可以任意選擇位置 可以與原有的點重合 然後將這n m個點中的一些點延圓周移動,最終使n m個點均勻分布,即在乙個正...

NOJ1043 演算法實驗三 跳馬

描述 在西洋棋中,馬的走法與中國象棋類似,即俗話說的 馬走日 下圖所示即西洋棋中馬 k 在一步能到達的格仔 其中黑色的格仔是能到達的位置 現有一200 200大小的西洋棋棋盤,棋盤中僅有乙個馬,給定馬的當前位置 s 和目標位置 t 求出馬最少需要多少跳才能從當前位置到達目標位置。輸入 本題包含多個測...

NOJ1147 演算法實驗三 木乃伊迷宮

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述木乃伊地下宮殿是乙個6行6列的迷宮。作為敢到木乃伊地下宮殿裡去探險的你,有沒有跟木乃伊抓迷藏的心理準備呵!遊戲在木乃伊所在的迷宮裡展開,任務就是盡快趕到出口。你一次只能走一步,而木乃伊可以走兩步,但木乃伊是很笨的,他總是先盡量跟...