P1256 显示图像(广搜)
题意:略
思路,先说如何建树吧。广搜很简单,就是一个队列+一个检测数组。但是本质还是对搜索树的构建。
这里的构建就是一个节点有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 显示图像(广搜)的更多相关文章
- Luogu P1256 显示图像
P1256 显示图像 题目描述 古老的显示屏是由N×M个像素(Pixel)点组成的.一个像素点的位置是根据所在行数和列数决定的.例如P(2,1)表示第2行第1列的像素点.那时候,屏幕只能显示黑与白两种 ...
- 洛谷 P1256 显示图像
P1256 显示图像 题目描述 古老的显示屏是由N×M个像素(Pixel)点组成的.一个像素点的位置是根据所在行数和列数决定的.例如P(2,1)表示第2行第1列的像素点.那时候,屏幕只能显示黑与白两种 ...
- HDU--杭电--1195--Open the Lock--深搜--都用双向广搜,弱爆了,看题了没?语文没过关吧?暴力深搜难道我会害羞?
这个题我看了,都是推荐的神马双向广搜,难道这个深搜你们都木有发现?还是特意留个机会给我装逼? Open the Lock Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 5652(二分+广搜)
题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之 ...
- nyoj 613 免费馅饼 广搜
免费馅饼 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy ...
- poj 3984:迷宫问题(广搜,入门题)
迷宫问题 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7635 Accepted: 4474 Description ...
- poj 3278:Catch That Cow(简单一维广搜)
Catch That Cow Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 45648 Accepted: 14310 ...
- 双向广搜 POJ 3126 Prime Path
POJ 3126 Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 16204 Accepted ...
- 广搜+打表 POJ 1426 Find The Multiple
POJ 1426 Find The Multiple Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 25734 Ac ...
随机推荐
- Java岗 面试考点精讲(网络篇03期)
1. OSI七层模型 总结一下: 应用用层按协议打包数据 由传输层加上双方的端口号 由网络层加上双方的IP地址 由链路层加上双方的MAC地址,并将数据拆分成数据帧 数模信号转换并由物理层传输到另一端 ...
- Android 实现倒计时操作
new CountDownTimer(10000, 1000) { @Override public void onTick(long millisUntilFinished) { } @Overri ...
- C# 动态添加类、动态添加类型、代码添加类型
引用控件: DLL下载地址:http://pan.baidu.com/s/1nv2GUWL public class TypeCreator { public static Type Creator( ...
- 常见js面试题
包含内容: Array indexOf(). 数组扁平化 isArray() 数组的去重 Object.is() Array.filter 用一行代码实现数组扁平化? JavaScript isArr ...
- JS的函数节流(throttle)
什么是函数节流? 介绍前,先说下背景.在前端开发中,有时会为页面绑定resize事件,或者为一个页面元素绑定拖拽事件(其核心就是绑定mousemove),这种事件有一个特点,就是用户不必特地捣乱,他在 ...
- 2018-11-09 VS Code英汉词典插件v0.0.4-驼峰下划线命名
首先, 在两天时间内安装数破百, 多谢支持. VS Code插件市场地址: 英汉词典 - Visual Studio Marketplace 开源库地址同前文: Visual Studio Code插 ...
- mac 下 ipython+notebook
python做数据分析相关的工具的安装和配置,以及numpy的入门 为什么要用PYTHON来做数据分析 MATLAB R语言,语法类似C语言,但是它在语义上是函数设计语言,也是开源的. python ...
- Visual Studio Team Services Demo Generator简介
Visual Studio Team Services Demo Generator简介 Visual Studio Team Services Demo Generator能够帮助我们在Visual ...
- 利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)
首先呢,这篇文章,也是小弟参考了许多文章,自己整理出来的,有很多不足之处还有待加强,期待各位评论. > LNMP 是代表 Linux 系统下的 Nginx.Mariadb.PHP 相结合而构建成 ...
- 数据库之mysql篇(2)—— mysql常识引入/用户授权
常识引入 1.概念: 数据库:本质上是一个文件夹 1)查看本机所有数据库:show databases; 结束符:分号[:],一切数据行的结尾都以分号作为结束 2)创建数据库:create 数据库名 ...