题目链接:http://poj.org/problem?id=1979
#include<cstring> #include<iostream> using namespace std; int n=0,h=0,sum=0; char aa[21][21]; void DFS(int p,int q) { if(aa[p][q]=='.'&&p>=0&&p<h&&q>=0&&q<n) { sum++; aa[p][q]='#'; } else return ; DFS(p-1,q); DFS(p+1,q); DFS(p,q-1); DFS(p,q+1); } int main() { while(cin>>n>>h) { if(n==0||h==0)break; int p=0,q=0; sum=0; memset(aa,0,sizeof(aa)); for(int i=0;i<h;i++) for(int j=0;j<n;j++) { cin>>aa[i][j]; } for(int i=0;i<h;i++) for(int j=0;j<n;j++) { if(aa[i][j]=='@') { p=i;q=j; aa[i][j]='.'; } } DFS(p,q); cout<<sum<<endl; } return sum; }