3533: 黑白图像
描述
输入一个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: 黑白图像相关推荐
- 如何将一个彩色图像转换成黑白图像
作者:未知 彩色图像转换为黑白图像时需要计算图像中每像素有效的亮度值,通过匹配像素 亮度值可以轻松转换为黑白图像. 计算像素有效的亮度值可以使用下面的公式: Y=0.3RED+0.59GREEN+0. ...
- 如何区别一幅图像是否是黑白图像
这篇文章的思路是很清晰的,但是个人觉得这样判断太耗时,在实际做工程的时候完全可以多判断一些样本点来节约时间 其实按理说这并不是一件困难的工作,但是由于种种原因,在OpenCV中读取的黑白图像并不是我们 ...
- python黑白图片上色_百度AI攻略:黑白图像上色
[使用攻略][评测报告][黑白图像上色] 1.功能描述: 百度智能识别黑白图像内容并填充色彩,使黑白图像变得鲜活,让老照片重新焕发活力.本文针对黑白图像上色功能开发了使用攻略,提供全套代码,并与其他厂 ...
- [机器学习实战] 深度学习为黑白图像着彩色
深度学习增强了视觉和语言处理等"认知"任务,连谷歌都转向了基于神经网络的语言翻译,如此火爆的原因或许是它不需要掌握各个领域的特定知识就能取得想要的结果.当然,海量GPUs并行计算硬 ...
- 【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 ...
- 百度AI攻略:黑白图像上色
1.功能描述: 想必大家家里都有很多黑白的老照片,里面有着满满的回忆.百度智能识别黑白图像内容并填充色彩,使黑白图像变得鲜活,让老照片重新焕发活力.说干就干,攻略和代码奉上. 2.平台接入 黑白图像上 ...
- 黑白图像,灰度图像和彩色图像的区别
黑白.B&W.单色图像表示二值图像. 灰度图像(gray image)是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅 ...
- Python基于CycleGAN&pix2pix的黑白图像AI上色(源码&部署教程)
1.项目背景 自从GAN技术发展以来,许多新奇的应用都得到了落地,本次我们来介绍其中一个小应用,就是黑白图像上色.想必大家在网上经常看到一些给黑白图像上色的视频,可以修复早期的黑白影像,背后的技术就是 ...
- 二值图像:BW(黑白图像)、 Gray (灰度图像) 、单色图像;Color(彩色图像)
二值图像(binary image),即图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白.B&W.单色图像表示二值图像. B&W黑白图像: 只有黑色和白色,不存在过渡 ...
- 宝藏AI应用推荐!带你体验黑白图像自动上色的快乐~
黑白与色彩 似乎把时代分割了两半~ 我在这头看见了错乱繁华,琳琅满目,看见快速消长的色彩缤纷. 翻开一张黑白照片 我能看到世代流传的印记,一种历久弥新的美 我能看到但我却又看不到"你&quo ...
最新文章
- 【swjtu】数字电路实验6_旋转编码器人机交互电路设计
- 工业智联网: 基本概念、关键技术与核心应用
- apache2 cgi配置
- Boost : to_string_stub用法的测试程序
- strcpy 函数的实现
- php7 pdo mysql_PHP7添加pdo_mysql扩展
- gpio驱动蜂鸣器出现破音_五款蜂鸣器驱动电路原理图
- Customizing AxWebBrowser, make it powerful
- 关于大型网站技术演进的思考(十四)--网站静态化处理—前后端分离—上(6)...
- 前端培训丁鹿学堂:nodeJS入门指南(一)
- 人工智能必备知识储备之“数学篇”
- 矩阵分析及应用(1-2章)
- winbox 端口扫描_ROS软路由限速、防syn、ip伪装、mac绑定、防火墙、屏蔽端口
- 吴江运东2万+,到底贵不贵?
- 为什么计算机没有桌面显示不出来,我的电脑桌面不显示“我的电脑”了,请问怎么调出来?谢谢...
- python调用jar包
- 使用Python发送邮件(图片、表格、附件) 系列三: 发送工作报表之透视表自动刷新数据
- python数据分析怎么画_跟小白学Python数据分析——绘制维恩图
- 小米9se开发版系统回刷MIUI稳定版系统
- 树莓派diy小型计算机,自制树莓派电脑,让树莓派不再神秘