杭电1241
2015-06-18 22:20 HaodongGUO 阅读(119) 评论(0) 编辑 收藏 举报#include<stdio.h> #include<iostream> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; int dx[8]={0,0,-1,1,-1,1,-1,1}; int dy[8]={1,-1,0,0,-1,1,1,-1}; char s[202][202]; int cnt,m,n; void dfs(int x,int y) { int i,j,nx,ny; for(i=0;i<8;i++) { nx=x+dx[i]; ny=y+dy[i]; if(nx<m&&nx>-1&&ny>-1&&ny<n&&s[nx][ny]=='@') { s[nx][ny]='*'; dfs(nx,ny); } } } int main() { int i,j,num; while(cin>>m>>n&&(m!=0&&n!=0)) { cnt=0; for(i=0;i<m;i++) { for(j=0;j<n;j++) { cin>>s[i][j]; } } for(i=0;i<m;i++) for(j=0;j<n;j++) { if(s[i][j]=='@'){ dfs( i,j); cnt++;} } cout<<cnt<<endl; } return 0; }
作为一个菜鸟已经看到两到这样的类型题了,估计是深搜的经典题。值得一A