题目:
简单dfs,没什么好说的
代码:
#include <iostream> using namespace std; typedef long long ll; #define INF 2147483647 int w,h; char a[22][22]; int dir[4][2] = {-1,0,1,0,0,-1,0,1}; int ans = 0; void dfs(int x,int y){ if(x < 0 || x >= h || y < 0 || y >= w || a[x][y] == '#') return; ans++; a[x][y] = '#'; for(int i = 0;i < 4; i++){ dfs(x+dir[i][0],y+dir[i][1]); } } int main(){ while(cin >> w >> h){ if(w == 0 && h == 0) break; ans = 0; int sx,sy; for(int i = 0;i < h; i++){ for(int j = 0;j < w; j++){ cin >> a[i][j]; if(a[i][j] == '@'){ sx = i;sy = j; } } } dfs(sx,sy); cout << ans << endl; } return 0; }