<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;
}