描述:
有乙隻電子老鼠被困在如下圖所示的迷宮中。這是乙個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列的迷宮。作為敢到木乃伊地下宮殿裡去探險的你,有沒有跟木乃伊抓迷藏的心理準備呵!遊戲在木乃伊所在的迷宮裡展開,任務就是盡快趕到出口。你一次只能走一步,而木乃伊可以走兩步,但木乃伊是很笨的,他總是先盡量跟...