现在的位置: 首页 > 综合 > 正文

DFS 黑白格

2019年03月03日 ⁄ 综合 ⁄ 共 666字 ⁄ 字号 评论关闭
<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;
}


【上篇】
【下篇】

抱歉!评论已关闭.