hdu 1312
恩,直接DFS,还好,不算很慢
#include<iostream> #include<string> #include<algorithm> using namespace std; char map[21][21]; int n,m,cnt; int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}}; void dfs(int si,int sj) { for(int k=0;k<4;k++) { int i=si+dir[k][0]; int j=sj+dir[k][1]; if(i>0&&i<=m&&j>0&&j<=n&&map[i][j]!='#') { map[i][j]='#'; cnt++; dfs(i,j); //cout<<i<<' '<<j<<endl; } } return ; } int main() { int s1,s2; while(cin>>n>>m&&(n||m)) { for(int i=1;i<=m;i++) { for(int j=1;j<=n;j++) { cin>>map[i][j]; if(map[i][j]=='@') {s1=i;s2=j;} } } map[s1][s2]='#'; cnt=1; dfs(s1,s2); cout<<cnt<<endl; } return 0; }