hdu1180詭異的樓梯……bfs走迷宮……wa了16次,我太渣了,hdu1180bfs

來源:互聯網
上載者:User

hdu1180詭異的樓梯……bfs走迷宮……wa了16次,我太渣了,hdu1180bfs

#include<iostream>#include<queue>#include<cstring>using namespace std;int row,line,xx[4]={-1,1,0,0},yy[4]={0,0,-1,1};char map[100][100];bool vis[100][100];struct node{int x,y,step;}st;void init(){int i,j;bool flag=1;for(i=0;i<row;i++)scanf("%s",map[i]);for(i=0;flag&&i<row;i++)for(j=0;flag&&j<line;j++)if(map[i][j]=='S'){st.x=i;st.y=j;st.step=0;flag=0;}memset(vis,0,sizeof(vis));vis[st.x][st.y]=1;}bool iscan(int x,int y){if(x<0||y<0||x>=row||y>=line||vis[x][y]||map[x][y]=='*')return 0;return 1;}void bfs(){int i;queue<node>qq;node t1,t2;qq.push(st);while(qq.size()){t1=qq.front();qq.pop();if(map[t1.x][t1.y]=='T'){printf("%d\n",t1.step);return;}for(i=0;i<4;i++){t2=t1;t2.x+=xx[i];t2.y+=yy[i];t2.step++;if(!iscan(t2.x,t2.y))continue;if(map[t2.x][t2.y]=='.'||map[t2.x][t2.y]=='T'){vis[t2.x][t2.y]=1;qq.push(t2);}else if((map[t2.x][t2.y]=='|'&&!(t1.step&1))||(map[t2.x][t2.y]=='-'&&(t1.step&1))){if(i>1){t2=t1;t2.step++;qq.push(t2);continue;}t2.x+=xx[i];if(!iscan(t2.x,t2.y))continue;vis[t2.x][t2.y]=1;qq.push(t2);}else{if(i<2){t2=t1;t2.step++;qq.push(t2);continue;}t2.y+=yy[i];if(!iscan(t2.x,t2.y))continue;vis[t2.x][t2.y]=1;qq.push(t2);}}}}int main(){while(scanf("%d%d",&row,&line)!=EOF){init();bfs();}}




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.