nyoj 图像有用区域(BFS)
来源:互联网 发布:淘宝店铺托管找哪家 编辑:程序博客网 时间:2024/05/17 05:58
图像有用区域
原题链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=92
“ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。
图1 图2
已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点)。
- 输入
- 第一行输入测试数据的组数N(0<N<=6)
每组测试数据的第一行是两个个整数W,H分表表示图片的宽度和高度(3<=W<=1440,3<=H<=960)
随后的H行,每行有W个正整数,表示该点的像素值。(像素值都在0到255之间,0表示黑色,255表示白色) - 输出
- 以矩阵形式输出把黑色框之外的区域变黑之后的图像中各点的像素值。
- 样例输入
15 5100 253 214 146 120123 0 0 0 054 0 33 47 0255 0 0 78 014 11 0 0 0
- 样例输出
0 0 0 0 00 0 0 0 00 0 33 47 00 0 0 78 00 0 0 0 0
思路:在矩阵的周围再加一圈,把他们都赋为1,使得原矩阵的最外圈也能检测得到,之后就BFS就好了(注意输入的是宽和长)
ps: 一直RE无底洞,,,最后看了大神的思路才明白,宽和长。。还有再加一圈。。还是思想最重要啊,思想最重要啊,思想最重要啊。
代码:
#include<stdio.h>#include<string.h>#include<queue>using namespace std;int a[1000][1500];int W,H;struct node{ int x,y;};int to[4][2]= {0,1,0,-1,1,0,-1,0};void bfs(int x,int y){ node now,next; queue<node>s; now.x=x,now.y=y; s.push(now); while(!s.empty()) { now=s.front(); for(int i=0; i<4; i++) { int m=now.x+to[i][0],n=now.y+to[i][1]; if(m>=0&&n>=0&&m<=H+1&&n<=W+1&&a[m][n]) { a[m][n]=0; next.x=m,next.y=n; s.push(next); } } s.pop(); }}int main(){ int t; scanf("%d",&t); while(t--) { scanf("%d%d",&W,&H); int i,j; for(i=1; i<=H; i++) for(j=1; j<=W; j++) scanf("%d",&a[i][j]); for(i=0; i<=H+1; i++) { a[i][W+1]=1; a[i][0]=1; } for(i=0; i<=W+1; i++) { a[0][i]=1; a[H+1][i]=1; } bfs(0,0); for(i=1; i<=H; i++) { for(j=1; j<=W; j++) printf("%d ",a[i][j]); printf("\n"); } } return 0;}
1 0
- NYOJ 92 图像有用区域 (BFS)
- nyoj 图像有用区域(BFS)
- NYOJ-92 图像有用区域(bfs)
- NYOJ 92 图像有用区域 (经典的 bfs)
- NYOJ-92 图像有用区域 BFS
- nyoj 92 图像有用区域 【bfs】
- NYOJ 92--图像有用区域【BFS && 水题】
- NYOJ 92 图像有用区域 【bfs】
- nyoj--92 图像有用区域(bfs)
- nyoj ACM:图像有用区域 (bfs)
- nyoj 92 图像有用区域 bfs
- 【NYOJ-92- 图像有用区域-BFS】
- NYOJ 92 图像有用区域 bfs
- NYOJ 92 图像有用区域(BFS)
- 图像有用区域(bfs)
- 图像有用区域(bfs)
- NYOJ 图像有用区域
- nyoj--图像有用区域
- iOS - 裁剪图片方法CGImageCreateWithImageInRect
- linux安装配置和使用svn服务器
- ubuntu14.04 安装openNI2
- Android camera拍照分辨率
- AndroidStudio 多个第三方so文件重复引用导致 java.lang.UnsatisfiedLinkError 问题
- nyoj 图像有用区域(BFS)
- 如何更好地学习dubbo源代码(转)
- 使用MD5对用户密码加密与解密
- 优化 SQL SELECT 语句性能的 6 个简单技巧
- 摸爬滚打DirectX11_day04——顶点缓存介绍
- 关于 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock的问题
- java中的mvc和三层结构究竟是什么关系
- 微信小程序开发之选项卡(窗口顶部TabBar)页面切换
- capCreateCaptureWindow