描述

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

输入

第1行输入一个正整数n(n≤700),此后输入n行,每行是由n个0或1组成的字符串。

输出

在输入黑白图像中,八连块的个数

样例输入

6
100100
001010
000000
110000
111000
010100

样例输出

3

题目来源

http://acm.tzc.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=3533

刚开始对我八连通理解错了,怎么都不能数出3个八连通,后来才理解八连通是说八个方向连通就当一个,只有一个单独的也算一个八连通,所以题目给的数据中有3个八连通.

其实这道题最好做的方法深搜,可是提交后却Runtime Error(STACK_OVERFLOW),让我很是郁闷,希望有朋友能帮我解决,谢谢.

不过我用广搜成功A掉了,现在贴出我的代码,分享给大家.

//dfs,测试没问题,不过就是无法通过,Runtime Error(STACK_OVERFLOW),让我很是郁闷,希望有朋友能帮助解决
#include <iostream>
using namespace std;
const int MAX_SIZE = 701;
char maze[MAX_SIZE][MAX_SIZE];
int N;
void dfs(int x , int y)
{maze[x][y] = '0';for(int i = -1 ;  i <= 1 ; i++){for(int j = -1 ; j <= 1 ; j++){int gx = x + i;int gy = y + j;if(gx>=0 && gx<N && gy>=0 && gy<N && maze[gx][gy]=='1')dfs(gx,gy);}}
}
int main()
{cin>>N;int ans = 0;for(int i = 0 ; i < N ; i++)cin>>maze[i];for(int i = 0 ; i < N; i++){for(int j = 0 ; j < N ; j++){if(maze[i][j]=='1'){dfs(i,j);ans++;}}}cout<<ans<<endl;return 0;
}
//bfs成功通过
#include <iostream>
#include <queue>
using namespace std;
const int MAX_SIZE = 701;
char maze[MAX_SIZE][MAX_SIZE];
int N;
void bfs(int x,int y)
{maze[x][y] = '0';queue<pair<int,int> > q;pair<int,int> p;q.push(make_pair(x,y));while(!q.empty()){p = q.front();q.pop();for(int i = -1 ; i <= 1 ; i++){for(int j = -1 ; j <= 1 ; j++){int nx = p.first + i;int ny = p.second + j;if(maze[nx][ny]=='1'){maze[nx][ny]='0';q.push(make_pair(nx,ny));}}}}
}
int main()
{cin>>N;int ans = 0;for(int i = 0 ; i < N ; i++)cin>>maze[i];for(int i = 0 ; i < N; i++){for(int j = 0 ; j < N ; j++){if(maze[i][j]=='1'){bfs(i,j);ans++;}}}cout<<ans<<endl;return 0;
}

3533: 黑白图像相关推荐

  1. 如何将一个彩色图像转换成黑白图像

    作者:未知 彩色图像转换为黑白图像时需要计算图像中每像素有效的亮度值,通过匹配像素 亮度值可以轻松转换为黑白图像. 计算像素有效的亮度值可以使用下面的公式: Y=0.3RED+0.59GREEN+0. ...

  2. 如何区别一幅图像是否是黑白图像

    这篇文章的思路是很清晰的,但是个人觉得这样判断太耗时,在实际做工程的时候完全可以多判断一些样本点来节约时间 其实按理说这并不是一件困难的工作,但是由于种种原因,在OpenCV中读取的黑白图像并不是我们 ...

  3. python黑白图片上色_百度AI攻略:黑白图像上色

    [使用攻略][评测报告][黑白图像上色] 1.功能描述: 百度智能识别黑白图像内容并填充色彩,使黑白图像变得鲜活,让老照片重新焕发活力.本文针对黑白图像上色功能开发了使用攻略,提供全套代码,并与其他厂 ...

  4. [机器学习实战] 深度学习为黑白图像着彩色

    深度学习增强了视觉和语言处理等"认知"任务,连谷歌都转向了基于神经网络的语言翻译,如此火爆的原因或许是它不需要掌握各个领域的特定知识就能取得想要的结果.当然,海量GPUs并行计算硬 ...

  5. 【java】黑白图像

    输入一个n*n的黑白图像,统计其中黑色八连块的个数,0代表白,1代表黑. 样例输入: 6 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 ...

  6. 百度AI攻略:黑白图像上色

    1.功能描述: 想必大家家里都有很多黑白的老照片,里面有着满满的回忆.百度智能识别黑白图像内容并填充色彩,使黑白图像变得鲜活,让老照片重新焕发活力.说干就干,攻略和代码奉上. 2.平台接入 黑白图像上 ...

  7. 黑白图像,灰度图像和彩色图像的区别

    黑白.B&W.单色图像表示二值图像. 灰度图像(gray image)是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅 ...

  8. Python基于CycleGAN&pix2pix的黑白图像AI上色(源码&部署教程)

    1.项目背景 自从GAN技术发展以来,许多新奇的应用都得到了落地,本次我们来介绍其中一个小应用,就是黑白图像上色.想必大家在网上经常看到一些给黑白图像上色的视频,可以修复早期的黑白影像,背后的技术就是 ...

  9. 二值图像:BW(黑白图像)、 Gray (灰度图像) 、单色图像;Color(彩色图像)

    二值图像(binary image),即图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白.B&W.单色图像表示二值图像. B&W黑白图像: 只有黑色和白色,不存在过渡 ...

  10. 宝藏AI应用推荐!带你体验黑白图像自动上色的快乐~

    黑白与色彩 似乎把时代分割了两半~ 我在这头看见了错乱繁华,琳琅满目,看见快速消长的色彩缤纷. 翻开一张黑白照片 我能看到世代流传的印记,一种历久弥新的美 我能看到但我却又看不到"你&quo ...

最新文章

  1. 语音写出(wavwrite)
  2. python中的insert函数_Python numpy.insert函数方法的使用
  3. 计算机管理磁盘管理,如何打开磁盘管理?
  4. centos 上传jar 命令_centos上快速将一个jar使用docker部署启动
  5. Webex 如何在在线会议领域保持优势?
  6. 120万人同时在线考试,这么大的流量如何支撑
  7. C++笔记-VS2015加载Live2D(OpenGL)
  8. 【转】Maven实战(八)---模块划分
  9. react 使用rem布局_react如何使用rem适配
  10. python dd 合并二进制文件_马克的Python学习笔记#数据编码与处理 5
  11. sql查询数据库所有表、字、注释
  12. Java—String转化为JsonObject
  13. 使用MDScratchImageView实现刮奖效果
  14. Python4Delphi 安装使用注意
  15. 企业网站建设流程是什么?三个流程要知道
  16. JavaScript实现图片瀑布流
  17. 奔驰c260语言设置方法图解,奔驰C260L灯光使用方法 C260L灯光开关图解说明
  18. 谁说码农不懂浪漫?js写的'老婆生日快乐'特效
  19. Python基础三、2、list列表练习题 引用随机数
  20. 浅谈 Facade 模式

热门文章

  1. Hibernate中类的继承使用subclass实现
  2. 广州行键CRM客户关系管理系统
  3. 数据运营是什么?该如何做?
  4. 上海科技大学计算机夏令营随笔
  5. Git使用小记——复制粘贴快捷键的修改
  6. UDP实时图像传输进阶篇——1080P视频传输
  7. 蓝屏代码0x000009f
  8. android学习笔记-udacity/Sunshine-Version-2出错
  9. vxe-table renderer 渲染器详解,render 渲染器使用方式
  10. Java一个简单的Employee类