//题意:求从@出发的连续的'.'的个数。
分析:直接用dfs。
感悟:我很水啊,这题敲了半天。加油啊,亲。
View Code
#include<cstdio> #include<cstring> #include<iostream> using namespace std; #define maxn 110 int n,m; char str[maxn][maxn]; int dir[4][2]={{0,1},{1,0},{0,-1},{-1,0}}; int sum; void dfs(int s,int e){ for(int i=0;i<4;i++){ int xx=s+dir[i][0]; int yy=e+dir[i][1]; printf("xx=%d yy=%d\n",xx,yy); if(xx<0||xx>=m||yy<0||yy>=n){ continue; } if(str[xx][yy]=='.'){ sum++; str[xx][yy]='#'; dfs(xx,yy); } } } int main(){ while(scanf("%d%d",&n,&m)!=EOF){ int si,sj; if(n==0&&m==0) break; for(int i=0;i<m;i++){ scanf("%s",str[i]); for(int j=0;j<n;j++){ //scanf if(str[i][j]=='@'){ si=i; sj=j; } } //dfs(si,sj); } sum=1; str[si][sj]='#'; dfs(si,sj); printf("%d\n",sum); } return 0; }