HDOJ1312<DFS>
题意:
给一张图,有墙,有路。问某人从起点开始,最多能走多少个格子。
思路:
bfs;<水题>
#include<iostream> #include<cstring> char maze[25][25]; int visit[25][25]; int dir[4][2]={0,1,1,0,0,-1,-1,0};//方向 int W,H,sum; void dfs (int s,int e) { for(int i=0;i<4;i++){ int xn=s+dir[i][0]; int yn=e+dir[i][1]; if(xn>=0&&xn<H&&yn>=0&&yn<W&&!visit[xn][yn]&&maze[xn][yn]=='.'){ sum++;visit[xn][yn]=1;dfs(xn,yn); } } } int main () { while(~scanf("%d%d",&W,&H)) { if(W==0&&H==0) break; sum=1; memset(visit,0,sizeof(visit)); for(int i=0;i<H;i++) scanf("%s",maze[i]); for(int i=0;i<H;i++) for(int j=0;j<W;j++) { if(maze[i][j]=='@') { visit[i][j]=1; dfs(i,j); break; } } printf("%d\n",sum); } return 0; }
想的太多,做的太少。