背景
一陣狂風吹過
只聽「pong」的一聲,飄飄乎居士降落了!!!
描述又是美妙的一天,這天飄飄乎居士要和mm約會,因此他打扮的格外帥氣。但是,因為打扮的時間花了太久,離約會的時間已經所剩無幾。
幸運的是,現在飄飄乎居士得到了一張n*m的地圖,圖中左上角是飄飄乎居士的位置,右下角是約會的地點。『.』代表馬路,『』代表房屋。飄飄乎居士只能沿著『.』行走(也就是不能踏入『』),而且行走的方向只能為上下左右的相鄰格仔。為了不讓mm等待太久,飄飄乎居士在整個過程中可能會使用一次飄飄神功(也可能不使用,但最多使用一次),使用飄飄神功後,飄飄乎居士可以走進房屋一次(也就是在全程的行走中最多可以走乙個『*』,注意,只有乙個);
現在飄飄乎居士想要知道最少需要走多少步,飄飄乎居士才能到達約會的地點。
輸入格式
第一行,2個正整數 n和m,表示乙個n*m的矩陣
接下來n行,每行m個字元,字元一定為 』.』 或者是『*』 ,分別代表馬路和房屋。
輸入資料保證左上角和右下角都為『.』
輸出格式
一行,如果可以到達,則輸入需要行走的最少步數(飄飄神功也記為一步)
如果不可以到達,則輸出『no』
測試樣例1
輸入樣例輸入1
3 3.*.……
樣例輸入2
3 3.**
輸出樣例輸入1
4樣例輸入2
no簡直有毒,不想吐槽這個居士閒的沒事練哪門子神功
廣搜練手題
#include
#include
#include
#include
#define maxn 1005
using namespace std;
int n,m;
char a[maxn][maxn];
bool vis[maxn][maxn][2];
int dx[4]=;
int dy[4]=;
struct pointnode,r;
void bfs(int x,int y)
{ node.x=x;
node.y=y;
node.step=0;
node.used=0;
vis[x][y][0]=1;
queueq;
q.push(node);
while(!q.empty())
{r=q.front();
q.pop();
if(r.x==m&&r.y==n)
{coutn) continue;
if(r.x==m&&r.y==n)
{ cout<
TYVJ1288 飄飄乎居士取能量塊
9月21日,今天是pink的生日,飄飄乎居士當然要去別人的領土大鬧一番啦!為了收集更多的能量到pink家大鬧,飄飄乎居士準備從後花園中取出自己多年積攢的p個能量塊。後花園一共被劃分n個地區,能量塊被分散在裡面,現在飄飄乎居士拿出地圖,發現自己站在1的地方,而他要做的就是用最短的路程把所有的能量塊取出...
Tyvj P1288 飄飄乎居士取能量塊
背景 9月21日,pink生日 9月22日,lina生日 9月23日,輪到到飄飄乎居士 狂歡吧,嘻嘻 描述 9月21日,今天是pink的生日,飄飄乎居士當然要去別人的領土大鬧一番啦!為了收集更多的能量到pink家大鬧,飄飄乎居士準備從後花園中取出自己多年積攢的p個能量塊。後花園一共被劃分n個地區,能...
tyvjP1288 飄飄乎居士取能量塊
p1288飄飄乎居士取能量塊 9月21日,pink生日 9月22日,lina生日 9月23日,輪到到飄飄乎居士 狂歡吧,嘻嘻 9月21日,今天是pink的生日,飄飄乎居士當然要去別人的領土大鬧一番啦!為了收集更多的能量到pink家大鬧,飄飄乎居士準備從後花園中取出自己多年積攢的p個能量塊。後花園一共...