1 //题目地址:http://acm.njupt.edu.cn/acmhome/problemdetail.do?method=showdetail&id=1102

 2 //解题思路:遍历每个格子dfs访问当前格子的相领黑格
 3 #include <stdio.h>
 4 #include <string.h>
 5 
 6 #define MAXN 1000
 7 
 8 int mat[MAXN][MAXN], vis[MAXN][MAXN];
 9 
 void DFS(int x, int y){
         int i;
         if(mat[x][y]  == || vis[x][y] == ) return ;    //曾经访问过这个格子,或者当前格子为空
         vis[x][y] = ;  //标记(x, y)已访问过
         //递归访问周围的8个格子
          DFS(x, y + );
         DFS(x, y - );
         DFS(x + , y - );
         DFS(x + , y + );
         DFS(x - , y + );
         DFS(x - , y - );
         DFS(x + , y);
         DFS(x - , y);
 }
 
 int main(){
         int n, i, j, ans;;
         char s[MAXN];
         while(scanf("%d", &n) != EOF){
                 memset(mat, , sizeof(mat));       //所有格子都初始化为白色,包括周围一圈的虚拟格子
                 memset(vis, , sizeof(vis));            //所有各自都没有访问过
                 for(i = ; i < n; i++){
                         scanf("%s", s);
                         for(j = ; j < n; j++){
                                 mat[i + ][j + ] = s[j] - '';//把图像往中间移动一格,空出一圈白格子
                         }
                 }
                 ans = ;
                 for(i = ; i <= n; i++){
                         for(j = ; j <= n; j++){
                                 if(vis[i][j] ==  && mat[i][j] == ){
                                         DFS(i, j);  //找到所有未访问过的黑格
                                         ans++;
                                 }
                         }
                 }
                 printf("%d\n", ans);
         }
         return ;
 }

noj-1102-黑白图像的更多相关文章

  1. [ActionScript 3.0] AS3.0 将图像的Alpha通道转换为黑白图像(分离ARGB方式)

    import flash.display.BitmapData; import flash.display.Bitmap; /** * 将图像的Alpha通道转换为黑白图像(分离ARGB方式) */ ...

  2. [ActionScript 3.0] AS3.0将图像的Alpha通道转换为黑白图像(复制通道方式)

    import flash.display.BitmapData; /** * 将图像的Alpha通道转换为黑白图像 */ var p:Point = new Point(0,0); var bmpd: ...

  3. 黑白图像(DFS)

    输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图6-11所示的图形有3个八连块. 图6-11  拥有3 ...

  4. TZOJ 3533 黑白图像(广搜)

    描述 输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数.如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块.如图所示的图形有3个八连块. 输入 第1行输入一个正 ...

  5. MATLAB读取黑白图像显示却是黑色,24位深转8位深黑白图像解决方法

    1.24位深转8位深: ps将24位深原图.png保存为GIF图256即为8位,再将8位gif图转为需要的.png,即转为8位深png图. 2.MATLAB读取黑白图像显示几乎全为黑色: 这是最近处理 ...

  6. 小白书 黑白图像【DFS/Flood Fill】

    http://blog.csdn.net/u010470972/article/details/33415617 Description 输入一个n×n的黑白图像(1表示黑色,0表示白色),任务是统计 ...

  7. dfs入门-cogs1640[黑白图像]

    题目链接:http://cogs.pro:8081/cogs/problem/problem.php?pid=vxSmxkeqa [题目描述] 输入一个n×n的黑白图像(1表示黑色,0表示白色),任务 ...

  8. uva806 Spatial Structures 空间结构 (黑白图像的四分树表示)

    input 8 00000000 00000000 00001111 00001111 00011111 00111111 00111100 00111000 -8 9 14 17 22 23 44 ...

  9. Visio中如何绘制黑白图像

  10. (转)原始图像数据和PDF中的图像数据

    比较原始图像数据和PDF中的图像数据,结果见表1.1.表1.1中各种“解码器”的解释见本文后续的“PDF支持的图像格式”部分,“PDF中的图像数据”各栏中的数据来自开源的PdfView.如果您有兴趣查 ...

随机推荐

  1. MecanimControl插件随笔

    ----------------------------------------- 4个animatorController是怎么回事? 分别对应 1镜像动画速度>0 2镜像播放速度<0 ...

  2. cogs 610. 数对的个数

    610. 数对的个数 ★★   输入文件:dec.in   输出文件:dec.out   简单对比时间限制:1 s   内存限制:128 MB Description出题是一件痛苦的事情!题目看多了也 ...

  3. bzoj3453: tyvj 1858 XLkxc(拉格朗日插值)

    传送门 \(f(n)=\sum_{i=1}^ni^k\),这是自然数幂次和,是一个以\(n\)为自变量的\(k+1\)次多项式 \(g(n)=\sum_{i=1}^nf(i)\),因为这东西差分之后是 ...

  4. Android Activity生命周期(转)

    转自 http://blog.csdn.net/android_tutor/article/details/5772285

  5. unicode官网 unicode码表和标准下载

  6. 子div块中设置margin-top时影响父div块位置的解决办法及其原因

    解决办法①: 若子DIV块中使用margin-top,则在父DIV块中添加:overflow:hidden; 解决办法②: 在子DIV块中用padding-top代替margin-top. 有个叫 b ...

  7. $.each(obj,function(index,value)遍历的学习

    JQuery遍历对象 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  8. 如何使用LESS 深度定制Bootstrap

    一.LESS是什么? Less 是一门 CSS 预处理语言,它扩展了 CSS 语言,增加了变量.Mixin.函数等特性,使 CSS 更易维护和扩展. 中文介绍:http://lesscss.cn/ 有 ...

  9. Java中try catch finally语句中含有return语句的执行情况

    finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面 ...

  10. IIS7开启目录浏览功能

    IIS7开启目录浏览功能: 在右侧操作中点击启用,并在左侧面板中勾选显示字段.