首页 > 代码库 > AC日记——仙岛求药 openjude 2727
AC日记——仙岛求药 openjude 2727
仙岛求药
思路:
bfs;
来,上代码:
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;#define maxm 10005const int dx[5]={0,-1,0,1,0};const int dy[5]={0,0,1,0,-1};int n,m,quex[maxm],quey[maxm],qued[maxm];char map[25][25];bool if_[25][25];int bfs(){ int sx,sy,h=0,tail=1; for(int i=1;i<=n;i++) { scanf("%s",map[i]+1); for(int j=1;j<=m;j++) { if_[i][j]=true; if(map[i][j]==‘@‘) sx=i,sy=j; } } quex[0]=sx,quey[0]=sy,qued[0]=0,if_[sx][sy]=false; while(h<tail) { int nowx=quex[h],nowy=quey[h],d=qued[h++]; for(int i=1;i<=4;i++) { int x=nowx+dx[i],y=nowy+dy[i],dd=d+1; if(x>0&&x<=n&&y>0&&y<=m&&(map[x][y]==‘.‘||map[x][y]==‘*‘)&&if_[x][y]) { if(map[x][y]==‘*‘) return dd; if_[x][y]=false; quex[tail]=x,quey[tail]=y,qued[tail++]=dd; } } } return -1;}int main(){ scanf("%d%d",&n,&m); while(n!=0&&m!=0) cout<<bfs()<<endl,scanf("%d%d",&n,&m);; return 0;}
AC日记——仙岛求药 openjude 2727
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。