DFS A题

来源:互联网 发布:hbo 知乎 编辑:程序博客网 时间:2024/06/11 18:49
  1. #include<stdio.h>
  2. #include<string.h>
  3. char s[30][30];
  4. int maps[30][30],h,w,sum;
  5. void dfs(int i,int j){
  6. sum++;
  7. maps[i][j]=1;
  8. if(i+1<w&&maps[i+1][j]==0&&s[i+1][j]=='.')
  9. dfs(i+1,j);
  10. if(j+1<h&&maps[i][j+1]==0&&s[i][j+1]=='.')
  11. dfs(i,j+1);
  12. if(i-1>=0&&maps[i-1][j]==0&&s[i-1][j]=='.')
  13. dfs(i-1,j);
  14. if(j-1>=0&&maps[i][j-1]==0&&s[i][j-1]=='.')
  15. dfs(i,j-1);
  16. }
  17. int main(){
  18. int i,j;
  19. while(scanf("%d%d",&h,&w)==2&&(h||w)){
  20. memset(maps,0,sizeof(maps));
  21. sum=0;
  22. for(i=0;i<w;i++)
  23. scanf("%s",s[i]);
  24. for(i=0;i<w;i++)
  25. for(j=0;j<h;j++)
  26. if(s[i][j]=='@')
  27. dfs(i,j);
  28. printf("%d\n",sum);
  29. }
  30. return 0;
  31. }
原创粉丝点击