HDU-1244-Oil Deposits
http://acm.hdu.edu.cn/showproblem.php?pid=1241
基本的DFS
#include<stdio.h> #include<string.h> #include<stdlib.h> char map[105][105]; int n,m; int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}}; int go(int x,int y) { if(0<=x&&x<n&&0<=y&&y<m) return 1; return 0; } void dfs(int x,int y) { int i,xx,yy; for(i=0;i<8;i++) { xx=x+dir[i][0]; yy=y+dir[i][1]; if(go(xx,yy)&&map[xx][yy]=='@') { map[xx][yy]='*'; dfs(xx,yy); } } } int main() { int i,j,ans; while(scanf("%d%d",&n,&m),n||m) { for(i=0;i<n;i++) scanf("%s",map[i]); ans=0; for(i=0;i<n;i++) for(j=0;j<m;j++) if(map[i][j]=='@') { ans++; dfs(i,j); } printf("%d\n",ans); } return 0; }