飄飄乎居士的約會「程式設計題」

2022-09-23 08:00:10 字數 1308 閱讀 4237

背景

一陣狂風吹過

只聽「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個能量塊。後花園一共...