题目大意:
给出矩阵,从@出发,只能走.,问最多能走几步
解题思路:
bfs
代码:
#include#include #include #include using namespace std;char mapp[205][205];int vis[205][205];int n,sx,sy,m;int dirx[5]={ 0,0,1,-1};int diry[5]={ 1,-1,0,0};struct point{ int x; int y;};int isend(int x,int y){ if(x<0||y<0||x>=n||y>=m||vis[x][y]||mapp[x][y]=='#') return 1; return 0;}int bfs(){ queue que; point now,next; now.x=sx; now.y=sy; que.push(now); int i; while(!que.empty()) { now=que.front(); que.pop(); vis[now.x][now.y]=1; for(i=0;i<4;i++) { next.x=now.x+dirx[i]; next.y=now.y+diry[i]; if(isend(next.x,next.y)) continue; else { que.push(next); } } } return 0;}int main(){ int i,j; while(~scanf("%d%d",&m,&n)) { if(n==0&&m==0) break; for(i=0;i