Red and Black(DFS)
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=1312
1 #include<iostream> 2 #include<cstring> 3 #define mem(a) memset(a,0,sizeof(a)); 4 using namespace std; 5 const int MAXN =25; 6 int vis[MAXN][MAXN]; 7 char ma[MAXN][MAXN]; 8 int m,n; 9 void dfs(int x,int y) 10 { 11 if(x<0||x>=m||y<0||y>=n||ma[x][y]=='#'||vis[x][y]==1)return; 12 vis[x][y]=1; 13 dfs(x-1,y);dfs(x+1,y);dfs(x,y+1);dfs(x,y-1); 14 } 15 int main() 16 { 17 while(cin>>n>>m) 18 { 19 if(!m&&!n)break; 20 mem(vis);mem(ma); 21 int i,j,x,y; 22 for(i=0;i<m;i++) 23 for(j=0;j<n;j++) 24 { 25 cin>>ma[i][j]; 26 if(ma[i][j]=='@')x=i,y=j; 27 } 28 dfs(x,y); 29 int count=0; 30 for(i=0;i<m;i++)for(j=0;j<n;j++)if(vis[i][j])count++; 31 cout<<count<<endl; 32 } 33 return 0; 34 }

浙公网安备 33010602011771号