hdu1180詭異的樓梯(bfs)

2021-07-23 08:54:28 字數 1168 閱讀 1232

這道題的意思是哈利波特要從s走到t,中間有那種會改變方向的樓梯,經過樓梯的話一共只用一秒,但是可能會存在有特殊的樓梯會一秒改變一次方向,也就是說可能會等一秒,不會有兩個樓梯連續挨著,還有很重要的一點就是,你不能再樓梯上呆一秒,所以當你找到樓梯的時候,不能把他直接壓進佇列,要直接對它進行處理,然後把處理過的壓進佇列,這點一定要切記,再者就是在遇到樓梯的時候,先用步數的奇偶來判斷此時樓梯的方向,然後看此時自己的方向和樓梯的方向是否為同乙個方向,然後就很好操作了

#include 

#include

#include

using

namespace

std;

char s[30][30];

bool vis[30][30];

int dir[30][30];

int xx[4][2]= ,,,};

struct sa

} a,p,t;

priority_queueq;

int m,n;

int solve()

else

if(s[nx][ny]=='|'||s[nx][ny]=='-')

else c=s[nx][ny];

p.x=nx+xx[i][0];

p.y=ny+xx[i][1];

if(c=='|'&&(xx[i][1]==1||xx[i][1]==-1))

p.step=a.step+1;

else

if(c=='-'&&(xx[i][0]==1||xx[i][0]==-1))

p.step=a.step+1;

else p.step=a.step;

//vis[p.x][p.y]=1;

/* cout=0&&p.x=0&&p.yif(s[p.x][p.y]=='t')

else

if(!vis[p.x][p.y])}}

}}

}return0;}

int main()

if(s[i][j]=='|')

dir[i][j]=1;

if(s[i][j]=='-')

dir[i][j]=-1;}}

int ans=solve();

cout

/**1 3

s|t*/

hdu 1180 詭異的樓梯(bfs)

小記 阿西吧!我就因為乙個dir方向搞錯了,寫的是從左往右是上下左右,用的時候是按上左下右。思路 bfs,首先我們假設沒有樓梯的情況,那麼問題就簡單很多了,bfs隨手可以打出來。打完後再繼續 我們現在要新增可變的樓梯上去。樓梯有個初始狀態,然後有個到達樓梯旁邊時的樓梯的狀態,而這個狀態時和你到達樓梯...

HDU1180 詭異的樓梯 BFS

problem description hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向.比如下面的例子裡,一開始樓梯在豎直方向,一分鐘以後它移動到了水平方向,再過一分鐘它又回到了豎直方向.harry發現對他來說很難找到能...

HDU 1180 詭異的樓梯(BFS)

hogwarts正式開學以後,harry發現在hogwarts裡,某些樓梯並不是靜止不動的,相反,他們每隔一分鐘就變動一次方向.比如下面的例子裡,一開始樓梯在豎直方向,一分鐘以後它移動到了水平方向,再過一分鐘它又回到了豎直方向.harry發現對他來說很難找到能使得他最快到達目的地的路線,這時ron ...