一题看 无记忆化dfs、记忆化dfs和dp直接的转化

news2024/9/20 18:46:48

无记忆化dfs:

class Solution {
public:
    bool res=false;
    bool wordBreak(string s, vector<string>& wordDict) {
        set<string> S;
        int n=s.size();
        for(auto ss:wordDict){
            S.insert(ss);
        }
        function<void(int)> dfs=[&](int t){
            if(res==true) return ;
            if(t==n){
                res=true;
            }else{
                for(int i=t;i<n;i++){
                    if(S.find(s.substr(t,i-t+1))!=S.end()){
                        dfs(i+1);
                    }
                }
            }
        };
        dfs(0);
        return res;
    }
};

记忆化dfs:

class Solution {
public:
    
    bool wordBreak(string s, vector<string>& wordDict) {
        set<string> S;
        int n=s.size();
        vector<bool> path(n,0);
        for(auto ss:wordDict){
            S.insert(ss);
        }
        function<bool(int)> dfs=[&](int t){
            if(t==n){
                return true;
            }
            if(path[t]==true) return true;
            else{
                for(int i=t;i<n;i++){
                    if( S.find(s.substr(t,i-t+1))!=S.end() && dfs(i+1) ){
                            path[i]=true;
                            return true;
                    }
                }
            }
            return false;
        };

        bool res=dfs(0);
        return res;
    }
};

dp:

class Solution {
public:
    bool wordBreak(string s, vector<string>& wordDict) {
        set<string> S(wordDict.begin(),wordDict.end());
        int n=s.size();
        vector<bool> dp(n+1,false);
        dp[0]=true;
        for(int i=1;i<=n;i++){
            for(int j=i-1;j>=0;j--){
                if(dp[j] && S.find(s.substr(j,i-j)) != S.end() ){
                    dp[i]=true;
                    break;
                }
            }
        }
        return dp[n];
    }
};

dp[i]表示i之前的所有能不能重组

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072547.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习--对抗生成网络(GAN)

对抗生成网络&#xff08;Generative Adversarial Network, GAN&#xff09;是一种深度学习模型&#xff0c;由伊恩古德费洛&#xff08;Ian Goodfellow&#xff09;及其同事在2014年提出。GAN通过两个神经网络的对抗过程来生成数据&#xff0c;这两个网络分别是生成器&#xf…

Chapter 03 Vue指令(下)

欢迎大家订阅【Vue2Vue3】入门到实践 专栏&#xff0c;开启你的 Vue 学习之旅&#xff01; 文章目录 前言一、v-on指令二、v-for指令三、v-bind指令 前言 在 Vue.js 中&#xff0c;指令是带有 v- 前缀的特殊属性&#xff0c;不同属性对应不同的功能。通过学习不同的指令&#…

临床医生与人工智能识别三级淋巴结成熟状态的研究对比|文献速递·24-08-24

小罗碎碎念 这期推文的主题是三级淋巴结&#xff0c;主要解决一个问题——临床上如何识别三级淋巴结&人工智能如何应用于三级淋巴结的识别。这两篇文献来源于临床和工科两位不同的老师&#xff0c;是在与他们交流的过程中推荐的&#xff0c;在这里向他们表示感谢&#xff…

在VSCode中使用REST Client插件调试HTTP接口

在 VSCode 中安装 REST Client 扩展程序。新建 test.http 文件。编写请求 请求编写格式可以查看 REST Client 扩展程序说明。点击“Send Request”发送请求 5. 等待请求完成查看响应 请求完成会自动打开响应结果。响应结果上面部分是响应头&#xff0c;下面部分是响应…

idea付费插件,SequenceDiagram比较好用

以下idea付费插件你们都用过哪些呢&#xff1f; SequenceDiagram插件是一种用于绘制时序图的工具。时序图是一种图形化的表示对象之间消息传递顺序的方法。 该插件可以在使用各种编程语言编写代码时&#xff0c;方便地绘制时序图&#xff0c;以帮助开发者更好地理解和描述系统…

【数据分享】全球含建筑高度的建筑物数据(shp格式\约15亿栋建筑物)

建筑数据是我们在各项研究中经常使用到的数据。之前我们能获取到的建筑数据大多没有建筑高度信息&#xff0c;而建筑高度是建筑数据最重要的属性。之前我们给大家分享了我国分城市的含建筑高度的建筑物数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;本次我…

ST-LINK常见错误总结

伴随着走进STM32 开发 &#xff0c;烧录部分一直会出现 各种各样的问题 &#xff0c;写一篇博文记录关于烧录部分的问题&#xff0c;此文会持续更新&#xff0c;可能之后又遇到其他新的问题&#xff0c;会回来再添加的。 目录 STLINK CONNECTION ERROR 问题的解决 固件丢失 …

buuctf [MRCTF2020]hello_world_go

前言 学习笔记 这题签到&#xff01; 64IDA打开。 查找字符串发现什么都没有。。。 没事 搜索main()【不知道go语言有没有&#xff0c;先搜索再说】 随便点开一个。 有flag格式&#xff0c;提交看看呗。 成了&#xff0c;签到。 flag{hello_world_gogogo} 题外话&#xff0c;…

双系统报错verifiying shim SBAT data falled: Security Pollcy Violation,Ubuntu无法打开

问题 一觉醒来&#xff0c;打开电脑报错无法打开&#xff0c;详细报错如下&#xff1a; verifiying shim SBAT data falled: Security Pollcy Violation Something has gone serlously wrong: seni self-check falled: Security Policy vlolation 这是由于Windows系统自动更新…

x-cmd mod | x btop - 使用 btop 来查看进程的实时信息

目录 介绍使用语法子命令选项FLAGS 介绍 btop 是系统监控工具&#xff0c;能够实时监控 CPU、内存、磁盘、网络和进程使用情况。 使用语法 x btop [FLAGS]子命令 名称描述–cmd直接运行 btop 命令 选项 名称描述–preset,-p 从预设开始&#xff0c;整数范围为 0-9。–upda…

【深度学习】使用Conda虚拟环境安装多个版本的CUDA和CUDNN方便切换

conda虚拟环境安装CUDA和CUDNN 官网教程 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#conda-installation 1. 背景 深度学习用显卡训练的时候&#xff0c;需要安装与显卡对应的cuda和cudnn。但不同的项目所支持的pytorch版本是不一样的&#x…

考研备考是选择电子学习工具无纸化学习?还是纸质版训练考感?

作为一名成功上岸的考研学子&#xff0c;回顾备考的艰辛历程&#xff0c;深感学习工具的选择至关重要。在当今数字化时代&#xff0c;我们面临着一个关键的抉择&#xff1a;是延续传统的纸质版资料学习&#xff0c;还是投身于电子学习工具的怀抱&#xff0c;开启无纸化学习之旅…

安卓飞机大战设计过程

用户界面 XML布局文件和Activity类 Android布局文件XML是在res/layout文件夹下的xml文件&#xff0c;里面可以放一些组件 启动Activity时&#xff0c; Android 框架会调用 Activity 中的 onCreate() 回调方法&#xff0c;从而加载应 用代码中的布局资源&#xff1b; Overri…

PDF编辑神器!免费版助你轻松搞定文档转换

随着数字化时代的来临&#xff0c;PDF文件因其稳定性和兼容性成为了我们在职场中常用的文档格式。而面对众多的PDF编辑器&#xff0c;免费版的工具选择显得尤为重要。今天分享五款我用过的免费版PDF编辑器的使用感受&#xff0c;帮助大家更好地了解并选择适合自己的办公工具。 …

Flink1.18 同步 MySQL 到 Doris

一、前言 使用Apache Flink实现数据同步的ETL&#xff08;抽取、转换、加载&#xff09;过程通常涉及从源系统&#xff08;如数据库、消息队列或文件&#xff09;中抽取数据&#xff0c;进行必要的转换&#xff0c;然后将数据加载到目标系统&#xff08;如另一个数据库…

数据结构之排序(二)

目录 基本思想&#xff1a; 1.1冒泡排序 ​编辑1.1.1代码实现 1.3冒泡排序的特性总结&#xff1a; 2.1 快速排序 2.1.1基本思想 2.2.2代码实现 1. hoare版本 2.挖坑法 3.前后指针版本 2.2.3 快速排序的优化&#xff08;三数取中&#xff09; 实现步骤 3.1 快速排序非…

链表--随机链表复制

给你一个长度为 n 的链表&#xff0c;每个节点包含一个额外增加的随机指针 random &#xff0c;该指针可以指向链表中的任何节点或空节点。 构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成&#xff0c;其中每个新节点的值都设为其对应的原节点的值。新节点的 n…

太阳方向角/高度角/赤纬角/太阳时角/真平太阳时差/理论计算方法(matlab)

1. 理论学习 方向角&#xff0c;高度角计算公式 如图&#xff0c;直观地描述了方位角(圆盘上红色夹角)与高度角(黄色线与圆盘的夹角) 赤纬角计算公式 地球赤道平面与太阳和地球中心的连线之间的夹角 如图所示&#xff0c;23度那个. 时角计算公式 太阳时角是指日面中心的时角…

博客园OpenApi管理平台

简介 博客园&#xff08;Cnblogs&#xff09;提供了OpenAPI服务&#xff0c;允许开发者通过API来获取博客园中的数据。使用这个API&#xff0c;可以实现从博客园抓取文章、评论等信息的功能&#xff0c;这对于想要集成博客园内容到自己网站或应用的开发者来说是非常有用的。 …

【hot100篇-python刷题记录】【二叉树的最大深度】

R6-二叉树篇 最简单的方法&#xff1a; 循环len(root)次&#xff0c;每次循环执行以下操作&#xff1a; 循环pow(2,i)次&#xff0c;每次都root.pop(0) 如果为空&#xff0c;立即退出&#xff0c;返回i1 class Solution:def maxDepth(self, root: Optional[TreeNode]) ->…