nyoj92 图像有用区域
来源:互联网 发布:linux daemonize 编辑:程序博客网 时间:2024/06/05 03:34
图像有用区域
时间限制:3000 ms | 内存限制:65535 KB
难度:4
- 描述
“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,从(0,0)开始,只要遍历到不是0的数都将它变为0,说明这个数不在0里面,被0包起来的数是遍历不到的
#include<stdio.h>#include<string.h>#include<queue>using namespace std;int map[1000][1500];int m, n;int dir[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};struct node{int x, y;};void bfs(int a, int b){node p, s;p.x = a;p.y = b;map[a][b] = 0;queue<node> q;q.push(p);while(!q.empty()){p = q.front();q.pop();for(int i = 0; i < 4; i++){s.x = p.x+dir[i][0];s.y = p.y+dir[i][1];if(s.x >= 0 && s.y >= 0 && s.x <= n+1 && s.y <= m+1 && map[s.x][s.y] > 0){map[s.x][s.y] = 0;q.push(s);}}}}int main(){int t; scanf("%d", &t);while(t--){scanf("%d%d", &m, &n);for(int i = 0; i <= n+1; i++){for(int j = 0; j <= m+1; j++){map[i][j] = 1;}}for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){scanf("%d", &map[i][j]);}}bfs(0,0);for(int i = 1; i <= n; i++){for(int j = 1; j <= m; j++){if(j == 1){printf("%d", map[i][j]);}else{printf(" %d",map[i][j]);}}printf("\n");}}return 0;}
阅读全文
0 0
- NYOJ92-图像有用区域
- 图像有用区域nyoj92
- NYOJ92图像有用区域
- NYOJ92图像有用区域
- nyoj92 图像有用区域
- NYOJ92-图像的有用区域
- NYOJ92 图像有用区域 【BFS】
- nyoj92图像有用区域【bfs】
- NYOJ92 图像有用区域(广搜BFS)
- NYOJ92~图像有效区域
- nyoj92 图像有用区间(dfs)
- 图像有用区域
- NYOJ 图像有用区域
- 图像有用区域
- 图像有用区域
- 图像有用区域
- acm_92图像有用区域
- 图像有用区域 bfs
- 树莓派remot3.it外网访问最新--添加桌面共享
- 【Ubuntu】JenKin's命令笔记
- maven入门
- VBA,excel中选择特定内容复制粘贴
- POJ
- nyoj92 图像有用区域
- Mac下如何安装mysql
- HDU
- Unity协程封装
- 1195: 捧杯
- C#从服务器下载文件
- 数据库事务学习笔记
- yii2安装与初始化-Yii2学习笔记(一)
- Android 屏蔽USB权限弹框