记录编号 109725 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 [入门经典] 黑白图像 最终得分 100
用户昵称 Gravatarztx 是否通过 通过
代码语言 C++ 运行时间 0.075 s
提交时间 2014-07-09 12:27:27 内存使用 0.77 MiB
显示代码纯文本
#include <cstdio>

#define  maxn  710

int n , ans = 0 ;
bool g[maxn][maxn] = {false} ;
int  d[16] = {0,0,1,1,-1,-1,1,-1,0,0,-1,1,-1,1,-1,1} ;

void search(int x , int y )
{
	for (int i = 0 ; i < 9 ; i ++ )
	{
		int a = x+d[i] , b = y+d[15-i] ; // 刚开始把这里写成了8 , 教训啊!!! 
		if (g[a][b])
		{
			g[a][b] = false ;
			search(a,b) ;
		}
	}
}

int main()
{
	freopen("common.in" , "r" , stdin ) ;
	freopen("common.out", "w" , stdout) ;
	scanf("%d", &n ) ;
	for (int i = 2 ; i <= n+1 ; i ++ )
	{
		char ch ; int j = 1 ;
		while (ch = getchar() , ch != '0' && ch != '1') ;
		while (g[i][++j] = ch-'0' , ch = getchar() , ch == '0' || ch == '1') ;
	}
	for (int i = 2 ; i <= n+1 ; i ++ )
	{
		for (int j = 2 ; j <= n+1 ; j ++ )
			if (g[i][j])
			{
				ans ++ ; g[i][j] = false ;
				search(i,j) ;
			}
	}
	printf("%d", ans );
	return 0 ;
}