前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NYOJ 92 图像有用区域(bfs+预处理)

NYOJ 92 图像有用区域(bfs+预处理)

作者头像
Ch_Zaqdt
发布2019-01-08 17:20:12
3000
发布2019-01-08 17:20:12
举报
文章被收录于专栏:Zaqdt_ACMZaqdt_ACM

       这道题的意思就是在这个地图里,如果一些正数没有被0包围住就把这些正数改成0,而被0围起来的正数不变,然后输出这个地图,这就是一道bfs题,只是需要加一个预处理,因为在边缘的那些数不好判断,所以不如在地图外面加一层正数,然后从第一个数开始进行bfs,把相连的正数都改为0就好了,最后剩下的就是被0包围起来的搜索不到的正数了。

AC代码:

代码语言:javascript
复制
#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
using namespace std;
struct Node{
  int x,y;
}Now,Next;
int MAP[2500][2500];             // 直接把大于0的数改成0就行了,所以不需要开标记数组
int dir[4][2] = {1,0,0,1,-1,0,0,-1};
int T,n,m;


void bfs(){                     // bfs过程
  queue<Node> q;
  Now.x = 0;
  Now.y = 0;
  q.push(Now);
  while(!q.empty()){
    Now = q.front();
    q.pop();
    for(int i=0;i<4;i++){
      Next.x = Now.x + dir[i][0];
      Next.y = Now.y + dir[i][1];
      if(Next.x>=0&&Next.y>=0&&Next.x<=n+1&&Next.y<=m+1&&MAP[Next.x][Next.y]!=0){
        MAP[Next.x][Next.y] = 0;
        q.push(Next);
      }
    }
  }
}


int main()
{
  scanf("%d",&T);
  while(T--){
    scanf("%d%d",&m,&n);
    memset(MAP,1,sizeof(MAP));         // 预处理
    for(int i=1;i<=n;i++){             // 从1开始输入,相当于地图外面有一圈 1
      for(int j=1;j<=m;j++){
        scanf("%d",&MAP[i][j]);
      }
    }
    bfs();
    for(int i=1;i<=n;i++){
    for(int j=1;j<=m;j++){
      printf("%d ",MAP[i][j]);
    }
    printf("\n");
  }
  }
  return 0;
}
/***
   [来源] NYOJ 92
   [题目] 图像有用区域
   [思路]
      因为要把没有被0包围住的数都改成0,所以可以在输入的地图外面预处理加一圈1,
      然后从0 0开始广搜,把遇到的正数都换成0,需要注意的是,题上的W,H指的是宽
      和高,之前一直当成高和宽,然后一直WA,,而且题上的W,H范围也反了,但是都开
      大点就没有什么影响了。
   [输入]
      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
*/
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年02月06日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档