acwing算法提高之搜索--DFS连通性模型和搜索顺序

news/2024/7/20 21:59:34 标签: 深度优先, 算法

目录

  • 1 专题说明
  • 2 训练

1 专题说明

本专题用来记录使用DFS连通性模型或DFS搜索顺序求解的题目。

2 训练

题目1:1112迷宫

考点:dfs

C++代码如下,

#include <iostream>
#include <cstring>

using namespace std;

//宏定义
#define x first
#define y second

const int N = 110;
int n;
char g[N][N];
bool st[N][N];
pair<int,int> start_node, end_node;
int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};

void dfs(int x, int y) {
    st[x][y] = true;
    
    //(x,y)可以走到哪里
    for (int k = 0; k < 4; ++k) {
        int nx = x + dirs[k][0];
        int ny = y + dirs[k][1];
        
        if (nx < 0 || nx >= n || ny < 0 || ny >= n) continue;
        if (st[nx][ny]) continue;
        if (g[nx][ny] == '#') continue;
        
        dfs(nx, ny);
    }
    return;
}

int main() {
    int T;
    cin >> T;
    while (T--) {
        cin >> n;
        for (int i = 0; i < n; ++i) cin >> g[i];
        cin >> start_node.x >> start_node.y >> end_node.x >> end_node.y;
        memset(st, 0, sizeof st); //每次都要进行重置
        if (g[start_node.x][start_node.y] == '.' && g[end_node.x][end_node.y] == '.') {
            dfs(start_node.x, start_node.y);
        }
        if (st[end_node.x][end_node.y]) {
            cout << "YES" << endl;
        } else {
            cout << "NO" << endl;
        }
    }
    
    return 0;
}

http://www.niftyadmin.cn/n/5404403.html

相关文章

前端工程化(黑马学习笔记)

前端工程化介绍 我们目前的前端开发中&#xff0c;当我们需要使用一些资源时&#xff0c;例如&#xff1a;vue.js&#xff0c;和axios.js文件&#xff0c;都是直接再工程中导入的&#xff0c;如下图所示&#xff1a; 但是上述开发模式存在如下问题&#xff1a; ● 每次开发都是…

Sora学习(一):Sora技术路径整体认知

前文&#xff1a;最近跟着DataWhale组队学习这一期“Sora原理与技术实战”&#xff0c;本篇博客主要是基于DataWhale成员、厦门大学平潭研究院杨知铮研究员分享的Sora技术原理详解课件内容以及参考网上一些博客资料整理而来&#xff08;详见文末参考文献&#xff09;&#xff0…

JSON与Object等的相互转换

JSON与Object的转换 // 将 Object 对象转换为 String 类型 String jsonString = JSON.toJSONString(body);// 将 String 或 byte[] 转换为 JSONObject 类型 JSONObject jsonObject = JSONObject.parseObject(jsonString); // 根据键key获取 JSONObject 中的某一个键值对的值 S…

kafka学习笔记四(面试题)

[Kafka 常见面试题]如何保证消息的不重复不丢失-阿里云开发者社区 (aliyun.com) 18道kafka高频面试题哪些你还不会&#xff1f;&#xff08;含答案和思维导图&#xff09;-阿里云开发者社区 (aliyun.com) Leader Epoch机制解决的是数据丢失或不一致的问题&#xff0c;见下文&…

打造无缝滚动体验:JavaScript中的scrollIntoView()方法实战指南

在现代Web开发中&#xff0c;提升用户体验是至关重要的。通过JavaScript的scrollIntoView()方法&#xff0c;我们可以为用户创造出流畅而令人愉悦的滚动体验。本文将深入研究scrollIntoView()的强大功能&#xff0c;并结合实例演示如何在项目中巧妙应用&#xff0c;以打造出无缝…

机器学习:数据处理基操

在处理完数据之后&#xff0c;选择好模型&#xff0c;就可以用训练集训练模型&#xff0c;用测试集输入模型 然后输出需要预测的结果啦&#xff5e; 一、模块导入 import numpy as np import pandas as pd #读入数据 二、pandas数据 一、dataframe基础 一、dataframe的创建…

【Web安全靶场】xss-labs-master 1-20

xss-labs-master 其他靶场见专栏 文章目录 xss-labs-masterlevel-1level-2level-3level-4level-5level-6level-7level-8level-9level-10level-11level-12level-13level-14level-15level-16level-17level-18level-19level-20 level-1 第一关没有进行任何限制&#xff0c;get请求…

SpringBoot+Jwt+Redis

大致流程&#xff1a; 参照&#xff1a; 史上最全面的基于JWT token登陆验证_完整的基于jwt的登陆认证-CSDN博客 springboot整合JWTRedis_springboot jwt redis-CSDN博客