黑白图像 -- 刘汝佳白书P107
2012-05-22 22:28
225 查看
输入一个n*n的黑白图像(1表示黑色,0表示白色),任务是统计其中八连块的个数。如果两个黑格子有公共边或者公共顶点,就说它们属于同一个八连块。
(题意是让求连在一起的块有几个,图见书本)
SamInput
6
100100
001010
000000
110000
111000
010100
SampleOutput:
3
(题意是让求连在一起的块有几个,图见书本)
SamInput
6
100100
001010
000000
110000
111000
010100
#include <iostream> #define MAXN 30 using namespace std; int mat[MAXN][MAXN], vis[MAXN][MAXN]; void dfs(int x, int y) { if(!mat[x][y] || vis[x][y]) return; vis[x][y] = 1; //标记(x,y) dfs(x-1, y-1); dfs(x-1, y); dfs(x-1, y+1); dfs(x, y-1); dfs(x, y+1); dfs(x+1, y-1); dfs(x+1, y); dfs(x+1, y+1); } int main() { //freopen("E:\\input.txt","r",stdin); memset(mat, 0, sizeof(mat)); memset(vis, 0, sizeof(vis)); char s[MAXN]; int n; cin >> n; for(int i=0; i<n; i++) { cin >> s; for(int j=0; j<n; j++) mat[i+1][j+1] = s[j] - '0'; } int count = 0; for(int i=1; i<=n; i++) for(int j=1; j<=n; j++) if(mat[i][j] && !vis[i][j]){ count++; dfs(i,j); } cout << count << endl; return 0; }
SampleOutput:
3
相关文章推荐
- HDU 1241 Oil Deposits(八连块问题) 与 黑白图像(刘汝佳的小白6.4.1)同样的原理(DFS)
- 3533: 黑白图像
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 刘汝佳白书 10-3-4危险的组合(统计(数位dp))
- 黑白图像变白色部分
- Android ColorMatrix类图像颜色处理-黑白老照片、泛黄旧照片、高对比度等效果
- 入门经典-6.3树和二叉树-4非二叉树-uva297四分树-先序遍历,黑白图像⭐⭐⭐⭐⭐难度:2
- android 图像处理(黑白,模糊,浮雕,圆角,镜像,底片,油画,灰白,加旧,哈哈镜,放大镜
- 黑白图像
- 黑白图像的图像增强
- 黑白图像——八连块
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 图像滤镜处理算法:灰度、黑白、底片、浮雕
- 黑白图像与灰度图像
- Android Bitmap保存为.bmp格式,图像转化为黑白图片
- 简单典型DFS---(解题报告)NOJ1102---黑白图像
- 反转黑白TIFF图像
- JAVA实现彩色图像转黑白(灰度)
- 我的OpenCV学习笔记(22):如何区别一幅图像是否是黑白图像