/*深搜的灵魂所在就是递归*/
//以此题为例http://acm.hdu.edu.cn/showproblem.php?pid=1312
#include<stdio.h> #include<string.h> int m,n; char a[100][100]; int aa[100][100]; void DFS(int x,int y) { if(x>=0&&y>=0&&x<m&&y<n) { if(a[x][y]=='.'&&!aa[x][y]) { aa[x][y]=1; DFS(x,y-1); DFS(x,y+1); DFS(x+1,y); DFS(x-1,y); } } } int main() { int x,y,k,q,i,j; while(scanf("%d%d",&n,&m)!=EOF,m||n) { k=0; memset(aa,0,sizeof(aa)); getchar(); for(x=0; x<m; x++){ for(y=0; y<n; y++) { scanf("%c",&a[x][y]); if(a[x][y]=='@') { i=x; j=y; } } getchar(); } a[i][j]='.'; DFS(i,j); int sum=0; for(x=0; x<m; x++) for(y=0; y<n; y++) sum+=aa[x][y]; printf("%d\n",sum); } return 0; }
深搜模板
最新推荐文章于 2022-04-12 15:08:53 发布