• 大抵思路:

    • DFS介绍:

      • 深度优先搜寻(depth-first searching,dfs)
      • 优先向深处搜寻,直到无奈找到新的分支时再回溯。
      • 因为须要重复地后退、回溯,适宜应用递归来实现。
      • 具体地,能够在函数中枚举所有的分支,而后顺次进行递归调用。
 #include<bits/stdc++.h> using namespace std; char cell[105][105]; int n,m; void dfs(int i,int j){  cell[i][j]='0';  int dx[4]={1,-1,0,0};  int dy[4]={0,0,1,-1};  for(int k = 0;k < 4;k++){    int xx = i + dx[k],yy = j + dy[k];     if(xx>=0&&xx<n&&yy>=0&&yy<m&&cell[xx][yy]!='0'){        dfs(xx,yy);     }  }  }  int main(){  cin>>n>>m; /* for(int i = 0;i < n;i++)      for(int j = 0;j < m;j++)        cin>>cell[i][j];      开始写的时候没有看输出格局,它是一串一串的,所以不能一个个输出,并且该用char数组而不是int  */    for(int i = 0;i < n;i++)    cin>>cell[i];   int ans = 0;  for(int i = 0;i < n;i++)    for(int j = 0;j < m;j++){    if(cell[i][j] != '0'){        ans++;        dfs(i,j);     }  }  cout<<ans<<endl;  }