NYOJ 92 图像有用区域(BFS)
2015-07-27 09:42
267 查看
图像有用区域
描述“ACKing”同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取出图片中某个黑色线圏成的区域以内的图片,现在请你来帮助他完成第一步,把黑色线圏外的区域全部变为黑色。
![](http://acm.nyist.net/JudgeOnline/admin/kind/attached/20101110121709_32589.jpg)
![](http://acm.nyist.net/JudgeOnline/admin/kind/attached/20101110122055_50520.jpg)
图1 图2
已知黑线各处不会出现交叉(如图2),并且,除了黑线上的点外,图像中没有纯黑色(即像素为0的点)。
输入第一行输入测试数据的组数N(0<N<=6)
每组测试数据的第一行是两个个整数W,H分表表示图片的宽度和高度(3<=W<=1440,3<=H<=960)
随后的H行,每行有W个正整数,表示该点的像素值。(像素值都在0到255之间,0表示黑色,255表示白色)输出以矩阵形式输出把黑色框之外的区域变黑之后的图像中各点的像素值。样例输入
1 5 5 100 253 214 146 120 123 0 0 0 0 54 0 33 47 0 255 0 0 78 0 14 11 0 0 0
样例输出
0 0 0 0 0 0 0 0 0 0 0 0 33 47 0 0 0 0 78 0 0 0 0 0 0 第一次WA的时候注意到宽高了,然后在n次WA以后注意到数组宽高开反了。 还是被输入坑了。 加一条非0的框然后沿着框BFS就好了。 代码:
#include<cstdio> #include<queue> #include<cstring> using namespace std; int m,n; int G[965][1455]; int d[4][2]={1,0,0,1,-1,0,0,-1}; struct point { int x; int y; }; void BFS() { queue<point>p; point initial,NewNode; initial.x=initial.y=0; p.push(initial); while(!p.empty()) { point Node=p.front(); p.pop(); for(int i=0;i<4;i++) { int xx=Node.x+d[i][0]; int yy=Node.y+d[i][1]; if(xx<0||xx>n+1||yy<0||yy>m+1||!G[xx][yy]) continue; NewNode.x=xx; NewNode.y=yy; G[xx][yy]=0; p.push(NewNode); } } } int main() { int t,i,j; scanf("%d",&t); while(t--) { scanf("%d%d",&m,&n); for(i=0;i<=n+1;i++) for(j=0;j<=m+1;j++) if(i==0||j==0||i==n+1||j==m+1) G[i][j]=1; for(i=1;i<=n;i++) for(j=1;j<=m;j++) scanf("%d",&G[i][j]); BFS(); for(i=1;i<=n;i++) for(j=1;j<=m;j++) if(j==m) printf("%d\n",G[i][j]); else printf("%d ",G[i][j]); } return 0; }
相关文章推荐
- createjs初学-制作一个简单的TextButton
- c++ const 成员函数
- 提高iOS开发效率的方法和工具
- 带你入门带你飞Ⅰ 使用Mocha + Chai + Sinon单元测试Node.js
- nginx结合tomcat使用
- ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView
- linux ssh配置
- HDU 1024 Max Sum Plus Plus(dp)
- 如何让CodeBlocks支持C99
- Ext 的Ajax 请求,添加mask 等待效果
- linux 下查找文件和字符串命令 find grep
- AndroidJNI.SetCharField 设置字符域
- C语言static 详解
- 思维导图之----javascript正则表达式知识树
- Eclipse中Project Explorer 和 Package Explorer有什么区别
- poj1061 青蛙的约会 (数论,扩展欧几里得)
- 中国剩余定理
- Push和Pop操作原理
- 使用Hibernate SQLQuery执行原生SQL
- java视频教程免费下载