(dfs模板)使用dfs算法时没有对回溯时的状态量进行恢复

news/2025/2/23 2:10:28/

模板:

vector<int> path;
    vector<vector<int>> result;
    void backTracking(......) {
        if (......) {
            ......
            return;
        }
        for (int i = 0; i < size; ++i) {
            path.emplace_back(......);
            backTracking(......);
            path.pop_back();
        }
    }

 

int nextP[4][2] = {{0,1},{1,0},{0,-1},{-1,0}};
class Solution {
public:
    bool flag = false;
    void dfs(vector<vector<char>>& board, string& word, vector<vector<bool>>& book,
             int row, int col, int curX, int curY, int wordindex)
    {
        if(wordindex == word.size())
        {
            flag = true;
        }
        for(int i = 0; i < 4; i++)
        {
            int newX = curX + nextP[i][0];
            int newY = curY + nextP[i][1];
            if(newX<0||newX>=row
            || newY<0||newY>=col)
                continue;
            if(book[newX][newY]==false && word[wordindex]==board[newX][newY])
            {
                book[curX][curY] = true; // 这次的dfs吸取教训只修改了值没有进行还原
                dfs(board, word, book, row, col, newX, newY, wordindex+1);
                book[curX][curY] = false; // fds回溯时一定要还原状态;
            }
        }
    }
    bool exist(vector<vector<char>>& board, string word) {
        int row = board.size();
        int col = board[0].size();
        for(int i = 0; i < row; i++)
        {
            for(int j = 0; j < col; j++)
            {
                if(board[i][j] == word[0])
                {
                    vector<vector<bool>> book(row, vector<bool>(col, false));
                    dfs(board, word, book, row, col, i, j, 1);
                    if(flag)
                        return true;
                }
            }
        }
        return false;
    }
};


http://www.ppmy.cn/news/20813.html

相关文章

torchvision

tochvision是pytorch中用于图像处理的库。 torchvision由以下部分组成&#xff1a; torchvision.datasets&#xff1a;加载数据集 torchvision.models&#xff1a;提供训练模型 torchvision.transforms&#xff1a;图形变换方法&#xff08;裁剪&#xff0c;转向等&#xf…

压缩包文件如何设置和删除密码

压缩软件除了可以压缩和解压文件&#xff0c;还可以作为加密软件&#xff0c;给压缩的文件设置密码来保护文件。 今天就来看下两个常用的压缩软件是如何设置和删除密码的。 先说说WinRAR这个最常用的压缩软件&#xff0c;它可以根据不同的需求设置单次密码和永久自动加密。 …

uniapp项目

目录 一、HBuilder创建项目 二、引入uView 2.1 npm方式安装 2.2 下载方式安装 三、小程序的分包 三、App.vue中的生命周期 四、工具封装 五、api接口请求封装 六、store 七、加载顺序 八、flex的使用 一、HBuilder创建项目 文件--新建--项目--默认模板--Vue2--创建 …

C++11 入门

作者&#xff1a;小萌新 专栏&#xff1a;C进阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍C11的一些背景知识 本篇博客主要是讲解一些关键字 C11前言C11诞生简介列表初始化{}初始化关键字autodecltypenullptr范围forSTL的更…

【网络安全】记一次红队渗透实战项目

前言 【一一帮助安全学习&#xff08;网络安全面试题学习路线视频教程工具&#xff09;一一】 一、信息收集 信息收集非常重要&#xff0c;有了信息才能知道下一步该如何进行&#xff0c;接下来将用nmap来演示信息收集 1、nmap扫描存活IP 由于本项目环境是nat模式需要项目…

IronWebScraper for .NET 2023.1 Crack

用于从 HTML Web 应用程序中提取干净的结构化数据的 C# 框架。 IronWebScraper for .NET 2023 &#xff1a;Adds support for Microsoft .NET 6 and .NET 7.January 27, 2023 - 17:25 New Version &#xff1a;&#xff1a;&#xff1a; Added support for Microsoft .NET 6 an…

java ssm校园勤工俭学助学志愿者兼职系统 idea maven

本论文主要论述了如何使用JSP技术开发一个校园勤工俭学兼职系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述校园勤工俭学兼职系统的当前背景以及系统开发的…

基于语义分割实现人脸图像的皱纹检测定位与分割

前言 人脸皱纹主要区分有额纹、川字纹、眼下纹、法令纹、嘴角纹&#xff0c;眼角纹等&#xff0c;在美颜相机&#xff0c;智能医美等于应用领域里&#xff0c;需要对人脸皱纹进行检测、定位、分割&#xff0c;测量等。 传统图像算法的皱纹检测 1.传统算法的皱纹检测可参考《…