题目大意:
给你一张包含墙壁,路和起点的图。求所有能到达的点数(包括起点)。
题目分析:
最基本的DFS,用BFS也可以做,记得把起点算上,新手可以通过这道题熟悉DFS模板。
源代码:
#include<iostream> using namespace std; char map[25][25]; int i,j,sx,sy,n,m; int dir[4][2]={1,0,0,1,-1,0,0,-1}; int step; void dfs(int x,int y) { for(int i=0;i<4;i++) { int xx,yy; xx=x+dir[i][0]; yy=y+dir[i][1]; if(xx>=0&&xx<n&&yy>=0&&yy<m&&map[xx][yy]=='.') { step++; map[xx][yy]='#'; dfs(xx,yy); } } } int main() { while(cin>>m>>n) { if(n==0&&m==0) break; getchar(); step=1; for(i=0;i<n;i++) { for(j=0;j<m;j++) { cin>>map[i][j]; if(map[i][j]=='@') { sx=i; sy=j; } } getchar(); } dfs(sx,sy); cout<<step<<endl; } return 0; }当前水平评级:2