http://acm.hdu.edu.cn/showproblem.php?pid=1241
题意:求几个油田
#include "iostream" #include "cstdio" using namespace std; int r,c,sum; char map[100][100]; int dir[8][2]={{0,1},{0,-1},{1,0},{-1,0},{1,1},{1,-1},{-1,1},{-1,-1}};///8个方向 void dfs(int x,int y) { if(x<0||y<0||x>=r||y>=c)///越界 return; else if(map[x][y]=='@')///找到油田 { map[x][y]='*'; for(int i=0;i<8;i++) dfs(x+dir[i][0],y+dir[i][1]);///递归深搜 } else return; } int main() { int i,j; while(scanf("%d%d",&r,&c)!=EOF&&r) { sum=0; for(i=0;i<r;i++) scanf("%s",map[i]);///输入地图 for(i=0;i<r;i++) for(j=0;j<c;j++) { if(map[i][j]=='@')///找到油田,个数加一 { sum++; dfs(i,j); } } printf("%d ",sum); } return 0; }