首页 > 其他分享 >vector开二维数组&&深搜迷宫问题&&BFS

vector开二维数组&&深搜迷宫问题&&BFS

时间:2024-04-28 21:47:10浏览次数:26  
标签:10 && int BFS vis step vector dx

vector<vector > vis(N+10(一维的大小),vector(N+10(二维的大小),0(初始化赋值)),step(N+10,vector(N+10,0));
vector<vector > vis(N+10,vector(N+10)),step(N+10,vector(N+10));
开数组大小一定要超过题目本身大小;

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define P pair<int, int>
const int N = 1e3 + 10;
int x[9] = {-2, -1, 1, 2, 2, 1, -1, -2};
int y[9] = {-1, -2, -2, -1, 1, 2, 2, 1};
queue

qu;
vector<vector> vis(N + 10, vector(N + 10)), step(N + 10, vector(N + 10));
signed main()
{
** int n, m;**
** cin >> n >> m;**
** int i, j;**
** cin >> i >> j;**
** qu.push({i, j});**
** step[i][j] = 0;**
** vis[i][j] = 1;**
** while (!qu.empty())**
** {**
** P z = qu.front();**

** for (int i = 0; i < 8; i++)**
** {**
** int dx = z.first + x[i];**
** int dy = z.second + y[i];**
** if (dx >= 1 && dx <= n && dy >= 1 && dy <= m && vis[dx][dy] == 0)**
** {**
** vis[dx][dy] = 1;**
** step[dx][dy] = step[z.first][z.second] + 1;**
** qu.push({dx, dy});**
** }**
** }**
** qu.pop();**
** }**
** for (int i = 1; i <= n; i++)**
** {**
** for (int j = 1; j <= m; j++)**
** {**
** if (vis[i][j] == 1)**
** {**
** cout << step[i][j] << ' ';**
** }**
** else**
** {**
** cout << -1 << ' ';**
** }**
** }**
** cout << '\n';**
** }**
** return 0;**
}

标签:10,&&,int,BFS,vis,step,vector,dx
From: https://www.cnblogs.com/anlan-woaiyuanshen/p/18164533

相关文章

  • 数据结构与算法学习(1)——BFS(广度优先搜索)
    BFS基础BFS会从根节点开始搜索,在每一个路口面临分叉的时候,先把每个岔路记录下来,然后再去一个一个的往前走一步。节点进行广度优先搜索的顺序题目PS:下列题目均来自leetcode中灵神题单1311.获取你好友已观看的视频......
  • 【BFS】abc351D Grid and Magnet 题解
    传送门D-GridandMagnet题意:给定h行w列的图表,其中部分位置有磁铁,人物会在磁铁四周((x+1,y),(x-1,y),(x,y+1),(x,y-1))停止,某点的自由度定义为从该点出发最多可到的方块数目可以走重复路前置例题:求连通块大小洛谷P1141思路:由自由度的定义联想到连通块的大小,从而决定用BFS......
  • JDK源码分析-Vector
    概述Vector是Java集合中线程安全的动态数组,它也可以根据需要进行扩容和缩容,与ArrayList类似。但有一个重要的区别,Vector是同步的,也就是它的操作是线程安全的,在某些特定场景下是可以保证线程安全的,但同时也会带来性能损耗,因此在单线程环境通常还是推荐使用ArrayList。类图......
  • [ARC176E] Max Vector
    MyBlogs[ARC176E]MaxVector\(n=10\)其实有点误导性。其实这个题不是指数级的算法,而且贪心也不是很合理,同时“要么...要么...”有点像最小割。一次操作可以看成要求\(x_j\geqa_{i,j}\)或者\(y_j\geqa_{i,j}\)。考虑切糕的模型,建\(2n\)条链,割哪条边就表示第\(i\)个......
  • 抖音的倒水问题, 计算机bfs求解
    暴力求解bfs方法.并且找到的一定是最少步骤问题:抖音上面又来了一个倒水游戏例子:3个杯子,容量12,9,5上来12是满的.然后都没有刻度只能倒到一个满这种倒法,然后最后希望倒出2个6ml的.#抖音上面又来了一个倒水游戏#例子:3个杯子,容量12,9,5上来12是满的.然......
  • C++ Vector fundamental
    C++Vectorfundamental主要内容包括:引入头文件,如何创建并初始化,访问容量,增查删改;1.包含头文件#include<vector>#include<iostream>2.创建vectorvector<int>v;vector<char>v1;vector<string>v2;3.初始化一维vector初始化后不进行赋值,直接访问会报错;3.1ve......
  • TiDB Vector 抢先体验之用 TiDB 实现以图搜图
    本文首发自TiDB社区专栏:https://tidb.net/blog/0c5672b9转载请注明出处!前言最早知道TiDB要支持向量化的消息应该是在23年10月份左右,到第一次见到TiDBVector的样子是在今年1月初,当时dongxu在朋友圈发了一张图:去年我研究了一段时间的向量数据库,一直对TiDB向量特性......
  • 标量码与矢量码(Scalar code & Vector code)及一些后续知识
    标量码每一个码字在每一个节点上包含一个字节,向量码在每一个节点上包含若干字节,共同组合为一个超字节(superbyte),不同节点上的超字节共同组成一个码字。上面这个图是标量码,下面的是矢量码。用俗话说,标量码存的最小单位是一个数字,而矢量码存的最小单位是一个向量(下面这个图存的是向......
  • 528. 奶酪(并查集orBFS)
    题面如下:https://www.acwing.com/problem/content/530/大致思路是:合并所有连接的空洞,判断下表面的空洞和上表面的空洞是否是同一集合集合#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>usingnamespacestd;constintN......
  • 动态规划、回溯、BFS、二分、滑动窗口总结
    动态规划动态规划的核心问题:重叠子问题,最优子结构,状态转移方程动态规划与记忆递归的区别:记忆递归为自顶而上的递归剪枝,动态规划为自底向上的循环迭代;正确的状态转移方程+dp[]数组:确定状态(原问题和子问题中变化的变量)->确定dp数组的定义dp[i]->确定当前状态的'选择'并确定......