图像实用区域

时间限制: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表示白色)

输出
以矩阵形式输出把黑色框之外的区域变黑之后的图像中各点的像素值。
例子输入
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

分析:在原来的图上加一圈1.

代码:

#include <stdio.h>
#include <string.h>
#include <queue>
#define W 1445
#define H 965
using namespace std;
const int dx[] = {0, 0, 1, -1};
const int dy[] = {1, -1, 0, 0}; int map[H][W], w, h;
struct node{
int x, y;
}; int limit(int x, int y){
return (x>=0&&x<=h+1&&y>=0&&y<=w+1); //这里的x。y。一定小于等于w+1,h+1;
} void bfs(){
int i;
node st;
st.x = st.y = 0;
queue<node > q;
q.push(st);
while(!q.empty()){
node temp = q.front();
for(i = 0; i < 4; i ++){
node cur = temp;
cur.x+=dx[i]; cur.y+=dy[i];
if(map[cur.x][cur.y] == 0) continue;
if(!limit(cur.x, cur.y)) continue;
//if(cur.x < 0||cur.y <0||cur.x > h+1||cur.y > w+1 || map[cur.x][cur.y] == 0) continue;
map[cur.x][cur.y] = 0;
q.push(cur);
}
q.pop();
}
} int main(){
int t, i, j;
scanf("%d", &t);
while(t --){
scanf("%d%d", &w, &h);
for(i = 0; i <= w+1; i ++){
map[0][i] = 1;
map[h+1][i] = 1;
}
for(i = 0; i <= h+1; i++){
map[i][0] = 1;
map[i][w+1] = 1;
}
for(i = 1; i <= h; i ++)
for(j = 1; j <= w; j++)
scanf("%d", &map[i][j]);
bfs();
for(i = 1; i <= h; i++){
printf("%d", map[i][1]);
for(j = 2; j<= w; j++)
printf(" %d", map[i][j]);
printf("\n");
}
printf("\n");
}
return 0;
}

版权声明:本文博客原创文章,博客,未经同意,不得转载。

nyoj 92 图片实用面积【bfs】的更多相关文章

  1. nyoj 92 图像有用区域

    点击打开链接 图像有用区域 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 "ACKing"同学以前做一个图像处理的项目时,遇到了一个问题,他需要摘取 ...

  2. nyoj 483 Nightmare【bfs+优先队列】

    Nightmare 时间限制:1000 ms  |  内存限制:65535 KB 难度:4   描述 Ignatius had a nightmare last night. He found him ...

  3. NYOJ 284 坦克大战 bfs + 优先队列

    这类带权的边的图,直接广搜不行,要加上优先队列,这样得到的结果才是最优的,这样每次先找权值最小的,代码如下 #include <stdio.h> #include <iostream ...

  4. nyoj三个水杯(bfs)

    三个水杯 时间限制:1000 ms  |           内存限制:65535 KB 难度:4   描述 给出三个水杯,大小不一,并且只有最大的水杯的水是装满的,其余两个为空杯子.三个水杯之间相互 ...

  5. NYOJ 92

    1.深搜(会爆栈,通过开全局栈模拟递归) 爆栈代码 # include<iostream> # include<string> # include<string.h> ...

  6. nyoj 27-水池数目(BFS, DFS)

    27-水池数目 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 南阳理工学院校园里有一些小河和一些湖泊,现在,我 ...

  7. nyoj 21-三个水杯(BFS)

    21-三个水杯 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:18 题目描述: 给出三个水杯,大小不一,并且只有最大的水杯的水是装 ...

  8. nyoj 58-最少步数 (BFS)

    58-最少步数 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:17 submit:22 题目描述: 这有一个迷宫,有0~8行和0~8列: 1,1,1 ...

  9. C++ 网络爬虫实现

    最近有个概念吵得很火,网络爬虫,但是基本都是用什么python或者JAVA写,貌似很少看到用c++写的,我在网上找了一个,看到其实还是很简单的算法 算法讲解:1.遍历资源网站 2.获取html信息   ...

随机推荐

  1. flash stm32的flash编写

    定义一个全局变量数组:const u8 TEXT_Buffer[]={"STM32F103 FLASH TEST"};    //u8和char* 写入到内存里会有什么区别???? ...

  2. 跟我学AngularJs:Service、Factory、Provider依赖注入使用与差别

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka        本教程使用AngularJs版本号:1.5.3        AngularJ ...

  3. [RxJS] Flatten a higher order observable with concatAll in RxJS

    Besides switch and mergeAll, RxJS also provides concatAll as a flattening operator. In this lesson w ...

  4. deep learning实践经验总结

    近期拿caffe来做图片分类.遇到不少问题,同一时候也吸取不少教训和获得不少经验. 先看样例再总结经验. 这是一个2类分类器.分的是条纹衣服和纯色衣服. 先看几张图片. 条纹衣服:   纯色衣服: w ...

  5. 辛星浅析yaf框架中的类的自己主动载入问题

    因为公司非常多项目都是基于yaf的,而非常多刚接触yaf的朋友问的第一个问题就是:yaf的自己主动载入是依照什么规则来的. 鉴于此.于是我特别开了一篇博文来记录一下. 首先在yaf中.models文件 ...

  6. poj1007——DNA Sorting

    Description One measure of ``unsortedness'' in a sequence is the number of pairs of entries that are ...

  7. Expression Blend 的点滴(4)--创建类似iPhone屏幕锁控件(上)

    原文:Expression Blend 的点滴(4)--创建类似iPhone屏幕锁控件(上) 本篇文章,最终效果图:  当然,不只是一个UI而已,如果只是一张图片,那专业的设计师能做出更出色的效果.在 ...

  8. Eclipse迅速执行:Exception in thread &quot;main&quot; java.lang.OutOfMemoryError: Java heap space

    问题叙述性说明: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space 问题原因: 程序中对 ...

  9. Ubuntu下一个python的BeautifulSoup和rsa安装方法---信息检索project2部分:微博爬行要求python包裹

    后果<信息检索>第二project,微博具有抓取数据,再处理.师兄给了代码.让慢慢爬.可是在ubuntu下.少了非常多python软件包.须要安装. 1.首先执行时.说少了python.B ...

  10. 华为云软件开发云VS开发痛点=?

    在软件开发的过程中,是不是总会遇到这些问题: 搭建一个开发环境,用了九牛二虎之力,悲催的是竟然用不了…… 团队同事突然出差,他写的代码出现问题,我却不会改…… 提升软件件质量靠代码,交叉看.找大拿,简 ...