记录编号 |
109725 |
评测结果 |
AAAAAAAAAAAAAAAAAAAA |
题目名称 |
[入门经典] 黑白图像 |
最终得分 |
100 |
用户昵称 |
ztx |
是否通过 |
通过 |
代码语言 |
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 ;
}