<pre name="code" class="cpp">下面是代码。
<pre name="code" class="cpp">#include <iostream> #include <cstdio> #include <cstring> #define MAX 1000 using namespace std; int mat[MAX][MAX], vis[MAX][MAX]; void dfs(int x, int y) { if (!mat[x][y] || vis[x][y]) { return; } vis[x][y] = 1; dfs(x-1, y-1); dfs(x-1, y); dfs(x-1, y+1); dfs(x, y-1); dfs(x, y+1); dfs(x+1, y-1); dfs(x+1, y); dfs(x+1, y+1); } int main(void) { int n, i, j; int count; char s[MAX]; memset(mat, 0, sizeof(mat)); memset(vis, 0, sizeof(vis)); cin>>n; for (i=0; i< n; i++) { memset(s, 0, sizeof(s)); scanf("%s", s); for (j=0; j<n; j++) { mat[i+1][j+1] = s[j] - '0'; } } count = 0; for (i=1; i<=n; i++) { for (j=1; j<=n; j++) { if (!vis[i][j] && mat[i][j]) { count++; dfs(i, j); } } } cout<<count<<endl; system("pause"); return 0; }