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 ...
随机推荐
- Python3 系列之 基础语法篇
基础数据类型 整数 python 可以处理任意大小的整数 浮点数 python 可以处理任意大小的浮点数,但是需要注意的一点是:整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的 ...
- EF中更新操作 ID自增但不是主键 ;根据ViewModel更新实体的部分属性
//ID自增但不是主键的情况 public int Update_join<TEntity>(TEntity entity) where TEntity : class { dbconte ...
- Laravel5.5 数据库迁移:创建表与修改表
数据库迁移是数据库的版本管理,要使用数据库迁移,需要在.env文件中连接好数据库(不多说).laravel本身已经存在user表和password_resets表的迁移了,因此,执行 php arti ...
- K8S 部署 ingress-nginx (三) 启用 https
部署 https 证书 cd ~/ingress # 生成私钥 tls.key, 密钥位数是 2048 openssl genrsa -out tls.key 2048 # 使用 tls.key 生成 ...
- vue从入门到进阶:计算属性computed与侦听器watch(三)
计算属性computed 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...
- 如何用JavaScript判断dom是否有存在某class的值?
例如: <html class="no-js"> <head> </head> <body> </body> </ ...
- JVM调优日志解析分析
一.调优参数设置 JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStam ...
- Java环境变量搭建
安装JDK开发环境 jdk下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.h ...
- virtualbbox centos7 NAT模式外网 Host-only Adapter模式联网 双网卡
1.下载oracle VM virtualbox centos7 1.1. 下载地址:https://www.virtualbox.org/wiki/Downloads https://www.ce ...
- svn状态与常见错误
TortoiseSVN 1.6.16是最后一个目录独立管理自身cache的svn版本(每个目录下都有一个隐藏的.svn文件夹) 之后的版本会则会根目录上统一进行管理(只有根目录下有一个隐藏的.svn文 ...