题目:
链接:点击打开链接
题意:
DFS搜索
算法:
dfs
思路:
简单题
代码:
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int w,h; char s[30][30]; int vis[30][30]; int cnt; void dfs(int x,int y) { if(s[x][y] == '#' || vis[x][y]) return ; if(x>=h || y>=w || x<0 || y<0) return ; if(s[x][y] == '@' && vis[x][y] == 0) { ++cnt; } if(s[x][y] == '.' && vis[x][y] == 0) { ++cnt; s[x][y] = '@'; } vis[x][y] = 1; dfs(x-1,y); dfs(x,y-1); dfs(x,y+1); dfs(x+1,y); } int main() { //freopen("input.txt","r",stdin); while(scanf("%d%d",&w,&h) != EOF && (w || h)) { memset(vis,0,sizeof(vis)); memset(s,0,sizeof(s)); getchar(); for(int i=0; i<h; i++) gets(s[i]); cnt = 0; for(int i=0; i<h; i++) { for(int j=0; j<w; j++) { if(s[i][j] == '@' && vis[i][j] == 0) { dfs(i,j); } } } cout<<cnt<<endl; } return 0; }