1.P1605 迷宫

经典的dfs

#include<bits/stdc++.h>
using namespace std;
const int MAXX=20;
bool book[MAXX][MAXX];
int qix,qiy,zhx,zhy,ans=0,N,M,T;
int fx[4]={0,0,-1,1};
int fy[4]={-1,1,0,0};
void dfs(int x,int y){//cout<<x<<"  "<<y<<endl;if(x==zhx && y==zhy){ans++;return ;}book[x][y]=1;for(int i=0;i<4;i++){int dx=x+fx[i];int dy=y+fy[i];if(!book[dx][dy] && dx<=N && dx>=1 && dy<=M && dy>=1)dfs(dx,dy),book[dx][dy]=0;;}
}
int main(){cin>>N>>M>>T;cin>>qix>>qiy>>zhx>>zhy;while(T--){int a,b;cin>>a>>b;book[a][b]=1;}dfs(qix,qiy);cout<<ans;return 0;
} 

2.P1443 马的遍历

思路同上,只要记录步数和改变走的方式。

#include<bits/stdc++.h>
using namespace std;
struct EVA{int x,y,temp;
};
queue<EVA>sat;
int fx[8]={1,2,-1,-2,1,-1,2,-2};
int fy[8]={2,1,-2,-1,-2,2,-1,1};
int mapp[1000][1000],n,m,qix,qiy;
int main(){cin>>n>>m;cin>>qix>>qiy;EVA qi;qi.x=qix;qi.y=qiy;qi.temp=1;mapp[qi.x][qi.y]=1;sat.push(qi);while(!sat.empty()){EVA wei=sat.front();sat.pop();for(int i=0;i<8;i++){EVA v;v.temp=wei.temp+1;v.x=fx[i]+wei.x;v.y=fy[i]+wei.y;if(v.x>=1 && v.x<=n && v.y>=1 && v.y<=m ){if(mapp[v.x][v.y]==0){mapp[v.x][v.y]=v.temp;sat.push(v);}}}}for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<mapp[i][j]-1<<" ";}cout<<endl;}return 0;
}

3.幻象迷宫

BFS的题目。

前期的思路:通过1500*1500的大小范围直接排除DFS,然后book标记障碍,book_ex标记所走的路,book_ex的值在每个迷宫中各不相同。

出现问题:超时

原因:1.可能出现穿过墙又穿回来的情况。

解决方案:book_ex记录当前迷宫编号的哈希值,在队列的结构体中加入一个值对应哈希值。

出现问题:超时

原因:2.由于book_ex的值极大概率会互相覆盖(毕竟是在同一迷宫)出现互相蚕食的情况。

解决方案(最终思路):

代码:

#include<bits/stdc++.h>
using namespace std;
int cnt=0,ansx,ansy;
const int maxx=1600;
int book[maxx][maxx];
int book_ex[maxx][maxx];
const int e_chou_1=114;
const int e_chou_2=514;
struct EVA{int x,y,id;
};
int n,m;
int fx[4]={0,0,1,-1};
int fy[4]={1,-1,0,0};
int an_quan=114514;
int main(){while(cin>>n>>m){cnt=1;int js=0;memset(book,0,sizeof(book));memset(book_ex,0,sizeof(book_ex));queue<EVA>sat;EVA qi;qi.id=cnt;bool ans=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){char ch;cin>>ch;if(ch=='#')book[i][j]=1;if(ch=='S')qi.x=i,qi.y=j,ansx=i,ansy=j;}}sat.push(qi);book_ex[qi.x][qi.y]=1;while(!sat.empty()){js++;//if(js>an_quan)ans=1;EVA wei=sat.front();sat.pop();//cout<<"wei:"<<wei.x<<"   "<<wei.y<<"   "<<wei.id<<endl;if(wei.id!=1 && wei.x==ansx && wei.y==ansy)ans=1;if(ans)break;for(int i=0;i<4;i++){EVA v;v.x=wei.x+fx[i];v.y=wei.y+fy[i];v.id=wei.id;if(v.x==0)v.x=n,v.id=wei.id-e_chou_1;if(v.x==n+1)v.x=1,v.id=wei.id+e_chou_1;if(v.y==0)v.y=m,v.id=wei.id-e_chou_2;if(v.y==m+1)v.y=1,v.id=wei.id+e_chou_2;if(book[v.x][v.y] || book_ex[v.x][v.y] == v.id)continue;if(book_ex[v.x][v.y]){ans=1;break;}book_ex[v.x][v.y]=v.id;sat.push(v);}}cout<<(ans?"Yes\n":"No\n");}return 0;
}

【week 4】搜索相关推荐

  1. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  2. 浅显易懂 Makefile 入门 (03)— 目标文件搜索(VPATH 和 vpath 的区别和使用)、隐含规则

    1. 目标文件搜索(VPATH和vpath) 如果需要的文件是存在于不同的路径下(即源文件与 Makefile 文件不在同一个路径下),在编译的时候就用到了 Makefile 中为我们提供的目录搜索文 ...

  3. Windows10自带搜索增强设置

    操作系统:Windows10 前言:Windows自带的搜索速度非常慢,因此有人借助Everything等索引软件进行搜索,能够显著提升搜索速度.但是Windows自带的搜索在进行一些设置以后也能达到 ...

  4. listary 指定目录搜索_everything

    20211009 https://zhuanlan.zhihu.com/p/225414423 listary详细使用 20210710 everything搜索文件,结果出现相同的2个重复情况,路径 ...

  5. LeetCode简单题之二叉搜索树中的搜索

    题目 给定二叉搜索树(BST)的根节点 root 和一个整数值 val. 你需要在 BST 中找到节点值等于 val 的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 null . 示例 1 ...

  6. Hexo集成Algolia实现搜索功能

    2年前搭建的hexo博客好久没有维护了,一看 hexo 以及先前使用 butterfly 主题已经更新好几个版本了,看介绍在速度性能上有了很大的提高,于是打算给 hexo 升个级,整理整理翻翻新.通过 ...

  7. 目标识别的选择性搜索

    目标识别的选择性搜索 Selective Search for Object Recognition 论文地址: https://ivi.fnwi.uva.nl/isis/publications/b ...

  8. 2021年大数据ELK(四):Lucene的美文搜索案例

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 美文搜索案例 一.需求 二.准备工作 1.创建IDEA项目 2. ...

  9. [C] 深度优先搜索解决连通块/染色问题——求岛的个数

    本文介绍用DFS解决连通块个数问题 有关dfs的介绍见另外一篇:不撞南墙不回头--深度优先搜索 例题 宝岛探险 题目描述 一个小岛由一个主岛和一些复附属岛屿组成,该岛使用一个二维矩阵表示,其中数字表示 ...

  10. [C] 层层递进——C语言实现广度优先搜索

    以防万一有人想不开要做染色的题呢?比如我. 广度优先搜索 如何实现一个广度优先搜索 广搜(bfs)是一个层层递进的概念,与深搜的不撞南墙不回头不同,广搜更像一个感染的过程,一个点只能感染到它周边的点. ...

最新文章

  1. 鸿蒙IPC摄像机,华为鸿蒙OS来了,海雀AI全景摄像头助力万物互联
  2. 一文详解神经网络与激活函数的基本原理
  3. 前端有关vue的面试题
  4. python安装成功的图标_安装Python
  5. CCCC-GPLT L1-038. 新世界 团体程序设计天梯赛
  6. Spring依赖注入static静态变量相关问题
  7. verilog中的initial块、always块详细解释
  8. 提升工作效率的优秀工具收藏
  9. 【C++/C FAQ】如何输入和输出十六进制的整数
  10. WannaCry只是个开始?信息时代你急需的安全书单
  11. Mac如何修复“无法卸载磁盘”错误
  12. ai 2.5d插件_【插画AI教程】从0到1,学会16 种热门插画设计风格!
  13. Word——如何统计除去标点符号的字数
  14. linux端口健康检查,linux – Systemd http健康检查
  15. 平安科技软件+金山WPS测试面试题
  16. SpringSecurity之授权
  17. 2021年终总结及2022年展望
  18. 跟着官方文档一步一步搭建基于gozero的微服务
  19. protoc-gen-go 安装
  20. python项目--O2O优惠券线下使用情况数据分析

热门文章

  1. 必应地图控件(WPF版)添加中国地图
  2. 隐藏腾讯地图api右上角的地图/卫星
  3. socketpair函数用法
  4. 【嵌入式AI】深度学习模型移植的移动端框架
  5. (十二)Core Java IO流(Properties,序列化,管道流,字符编码)-03 (108)
  6. 尚硅谷 家庭收支记账软件
  7. 集装箱交接清单(CTNJJD)
  8. shutdown 命令
  9. 壳浏览器 android,搭建Android浏览器壳子
  10. springboot集成lettuce