题意:略

思路,先说如何建树吧。广搜很简单,就是一个队列+一个检测数组。但是本质还是对搜索树的构建。

这里的构建就是一个节点有4个孩子,每个孩子代表4个方向就构成了一个搜索树。根据题目的就离公式转化一下,就是未被搜索的距离=最相邻已经被搜索的节点+1

代码:

#include<iostream>
#include<cstring>
#include<string>
using namespace std; int n, m;
struct node{
int x, y;
}a[];
//维护一个队列来记录进队顺序
bool f[][];
//标记没有搜索过的
int d[][];
//这个点就是,用来存最短距离的,初值全为0
int dx[] = { , , , -, }, dy[] = { , -, , , };
//方向数组是一个小技巧,学会发挥很大的威力
int tail = , head = ;
//队头,队尾
char s[]; int main(){
memset(f, true, sizeof(f));
//初始化全为true,标记过
cin >> n >> m;
for (int i = ; i <= n; ++i)
{
cin >> s;
//读入本行的所有元素
for (int j = ; s[j];++j)
if (s[j] == '')
f[i][j + ] = ;//如果是0则表示没有访问过
else{
d[i][j + ] = ;
f[i][j + ] = true;
a[++tail].x = i;
a[tail].y = j + ;
//入队
}
}
//按队的顺序开始搜索
for (head = ; head <= tail; ++head)
{
for (int i = ; i <= ; ++i)//用direct数组来向四方扩展
{
int xx = a[head].x + dx[i], yy = a[head].y + dy[i];
//方向数组的用处就在这里了。
if (!f[xx][yy]){
d[xx][yy] = d[a[head].x][a[head].y] + ;
//这个点的距离=队头距离+1
f[xx][yy] = true;
//标记访问过的
a[++tail].x = xx;
a[tail].y = yy;
}
}
}
//d数组就是距离,现在可以输出了
for (int i = ; i <= n; ++i)
{
for (int j = ; j <= m; ++j)
cout << d[i][j] << " ";
cout << endl;
}
}

P1256 显示图像(广搜)的更多相关文章

  1. Luogu P1256 显示图像

    P1256 显示图像 题目描述 古老的显示屏是由N×M个像素(Pixel)点组成的.一个像素点的位置是根据所在行数和列数决定的.例如P(2,1)表示第2行第1列的像素点.那时候,屏幕只能显示黑与白两种 ...

  2. 洛谷 P1256 显示图像

    P1256 显示图像 题目描述 古老的显示屏是由N×M个像素(Pixel)点组成的.一个像素点的位置是根据所在行数和列数决定的.例如P(2,1)表示第2行第1列的像素点.那时候,屏幕只能显示黑与白两种 ...

  3. HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?

    这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others)  ...

  4. HDU 5652(二分+广搜)

    题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...

  5. nyoj 613 免费馅饼 广搜

    免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...

  6. poj 3984:迷宫问题(广搜,入门题)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7635   Accepted: 4474 Description ...

  7. poj 3278:Catch That Cow(简单一维广搜)

    Catch That Cow Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 45648   Accepted: 14310 ...

  8. 双向广搜 POJ 3126 Prime Path

      POJ 3126  Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 16204   Accepted ...

  9. 广搜+打表 POJ 1426 Find The Multiple

    POJ 1426   Find The Multiple Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 25734   Ac ...

随机推荐

  1. Java岗 面试考点精讲(网络篇03期)

    1. OSI七层模型 总结一下: 应用用层按协议打包数据 由传输层加上双方的端口号 由网络层加上双方的IP地址 由链路层加上双方的MAC地址,并将数据拆分成数据帧 数模信号转换并由物理层传输到另一端 ...

  2. Android 实现倒计时操作

    new CountDownTimer(10000, 1000) { @Override public void onTick(long millisUntilFinished) { } @Overri ...

  3. C# 动态添加类、动态添加类型、代码添加类型

    引用控件: DLL下载地址:http://pan.baidu.com/s/1nv2GUWL public class TypeCreator { public static Type Creator( ...

  4. 常见js面试题

    包含内容: Array indexOf(). 数组扁平化 isArray() 数组的去重 Object.is() Array.filter 用一行代码实现数组扁平化? JavaScript isArr ...

  5. JS的函数节流(throttle)

    什么是函数节流? 介绍前,先说下背景.在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(其核心就是绑定mousemove),这种事件有一个特点,就是用户不必特地捣乱,他在 ...

  6. 2018-11-09 VS Code英汉词典插件v0.0.4-驼峰下划线命名

    首先, 在两天时间内安装数破百, 多谢支持. VS Code插件市场地址: 英汉词典 - Visual Studio Marketplace 开源库地址同前文: Visual Studio Code插 ...

  7. mac 下 ipython+notebook

    python做数据分析相关的工具的安装和配置,以及numpy的入门 为什么要用PYTHON来做数据分析 MATLAB R语言,语法类似C语言,但是它在语义上是函数设计语言,也是开源的. python ...

  8. Visual Studio Team Services Demo Generator简介

    Visual Studio Team Services Demo Generator简介 Visual Studio Team Services Demo Generator能够帮助我们在Visual ...

  9. 利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)

    首先呢,这篇文章,也是小弟参考了许多文章,自己整理出来的,有很多不足之处还有待加强,期待各位评论. > LNMP 是代表 Linux 系统下的 Nginx.Mariadb.PHP 相结合而构建成 ...

  10. 数据库之mysql篇(2)—— mysql常识引入/用户授权

    常识引入 1.概念: 数据库:本质上是一个文件夹 1)查看本机所有数据库:show databases; 结束符:分号[:],一切数据行的结尾都以分号作为结束 2)创建数据库:create  数据库名 ...