leetcode:布尔运算(动态规划版)

news2025/1/13 6:07:42

最近又要考试,勉励自己复习一些之前学过的!!!

开始使用的是DFS,遍历所有可能的情况,发现超时!

下面的是动态规划的一个模板,dp[i][j][result]表示从s的第i个元素到第个元素,结果为result的方案数。主要是第一层for循环从i到j的长度,长度从小到大,dp可以通过长度小的方案数,推出长度大的方案数。

假如:x|y|z|v

如果知道dp[0][2]和dp[3][5],那么dp[0][5]也可以推出来。有点分治的思想。把长的分成短的。

class Solution:
    def countEval(self, s: str, result: int) -> int:
        n = len(s)
        if not n: return 0
        dp = [ [ [0,0] for _ in range(n)] for _ in range(n) ]
        for i in range(0, n, 2):
            dp[i][i][0] = int(s[i])^1
            dp[i][i][1] = int(s[i])
            print(dp[i][i])
        for L in range(2, n, 2):
            for i in range(0, n, 2):
                j = i + L
                if j >= n:break
                for k in range(i+1, j, 2):
                    if s[k] == "&":
                        dp[i][j][0] += dp[i][k-1][0]*dp[k+1][j][0] + dp[i][k-1][0]*dp[k+1][j][1] + dp[i][k-1][1]*dp[k+1][j][0]
                        dp[i][j][1] += dp[i][k-1][1]*dp[k+1][j][1]
                    elif s[k] == "|":
                        dp[i][j][0] += dp[i][k-1][0]*dp[k+1][j][0]
                        dp[i][j][1] += dp[i][k-1][1]*dp[k+1][j][1] + dp[i][k-1][0]*dp[k+1][j][1] + dp[i][k-1][1]*dp[k+1][j][0]
                    else:
                        dp[i][j][0] += dp[i][k-1][0]*dp[k+1][j][0] + dp[i][k-1][1]*dp[k+1][j][1]
                        dp[i][j][1] += dp[i][k-1][1]*dp[k+1][j][0] + dp[i][k-1][0]*dp[k+1][j][1]
        return dp[0][-1][result]

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

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

相关文章

Auracast认证:蓝牙广播音频的革新之旅

低功耗音频(LE Audio)技术的突破,为蓝牙世界带来了前所未有的广播音频功能。Auracast™,作为蓝牙技术联盟精心打造的音频广播解决方案,正引领着一场全新的音频分享革命。它不仅革新了传统蓝牙技术的局限,更…

HuggingFace Embedding 转为 Ollama Embedding

Ollama 是基于 LlamaCpp 开发的 CPU 上的推理引擎,通过 LlamaCpp 提供的脚本可以将大语言模型装换为 gguf 的二进制跟是文件,从而通过 Ollama 就行推理。Ollama 支持HuggingFace 大多开源模型,例如 Llama、Qwen、Gemma 和 Phi3 等等。 GGUF …

【Leetcode:2848. 与车相交的点 + 模拟计数】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

软件研制功能点拆分

最近需要进行软件研制概算明细表中的估算对象原始功能点,记录一下学习过程,共有EI(external input 外部输入)、EO(外部输出)、EQ(外部查询)、ILF(internal logic 内部逻辑文件)、EIF(外部接口文件)五个。 功能点计数项分为数据功能(逻辑文件&…

【数据仓库】数据仓库常见的数据模型——范式模型

目录 一、范式 1、第一范式 2、第二范式 3、第三范式 4、进一步范式化:BCNF、4NF 和 5NF 简介 (1)Boyce-Codd 范式(BCNF) (2)第四范式(4NF) (5&#x…

光华里社区“电亮生活”行动:智能科技携手志愿温情,老旧小区焕发新生机

在朝阳区建外街道光华里社区,一场关于“电”的革命正悄然改变着居民的生活面貌。面对老旧小区普遍存在的电力设施陈旧、线路老化、电压不稳等老大难问题,社区党委没有坐视不管,而是携手北京中兴物业管理有限公司广联物业管理中心党支部&#…

泽众P-One性能测试平台支持分布式全链路压测

在当今数字化转型加速的时代,高性能、高可用性的系统已成为企业竞争力的核心要素之一。为了确保系统能够在高并发、大数据量的环境下稳定运行,分布式全链路压测成为了不可或缺的一环。P-One凭借其强大的功能,支持分布式全链路压测&#xff0c…

什么是 SMB 服务器以及它如何工作?

在本文中,您将了解 SMB 服务器以及它们如何促进网络文件共享。 我们将介绍它们的基本功能、主要特性以及如何安全地设置它们。无论您是新手还是需要复习,本指南都将帮助您更好地了解 SMB 服务器。 什么是 SMB 服务器? SMB(服务器…

day19JS-AJAX数据通信

1. 什么是AJAX 原生生js中有两种通信,一个ajax,还有一个是fetch。 AJAX 并不是编程语言,是一种从网页访问 Web 服务器的技术。AJAX 代表异步 JavaScript 和 XML。 AJAX 使用浏览器内建的 XMLHttpRequest 对象从 web 服务器请求数据&#xff0…

【开放词汇检测】MM-Grounding-DINO论文翻译

摘要 Grounding-DINO 是一种先进的开放式检测模型,能够处理包括开放词汇检测(Open-Vocabulary Detection,OVD)、短语定位(Phrase Grounding,PG)和指代表达理解(Referring Expressio…

Java多线程——模拟接力赛跑

题目: 多人参加1000米接力跑 每人跑100米,换下个选手 每跑10米显示信息 解题思路: 1.必须要用到多线程的锁,否则就会出现三个选手乱跑的情况,我们需要一个一个跑 2.使用给oneRunner上锁的方式更细的控制资源比直接给…

qt画板v1.0

qt图形视图做的一个工具,具备画板功能,对初学习有很大作用

搭建内网文件服务器(FTP),以及实现内网Gitee

一、实现windows搭建FTP,实现文件共享和管理 具体步骤: 1.打开控制面板,搜索功能 2.打开这几个配置 3.打开IIS,添加FTP站点即可 二、实现内网Gitee 参考博客: Gitblit服务器搭建及Git使用-CSDN博客 jdk1.8.0的安…

关系数据库(1,2)

目录 关系 域 笛卡尔集 元组 分量 基数 码 关系模式 关系模式的表示方式 关系数据库 基本关系操作 完整性 关系 单一的数据结构,二维表是一个逻辑结构,关系模型建立在集合代数的基础上。 域 指具有相同数据类型的集合。 笛卡尔集 笛卡尔集是…

独立站建站及运营经验分享

什么是独立站 了解过跨境电商的朋友肯定都知道,跨境电商其实分两种,一种是入驻平台,一种是做独立站。平台例如亚马逊,速卖通,Lazada,国内就是京东淘宝,他们都属于平台,但平台的劣势…

实验一 番外篇 虚拟机联网与DHCP服务器

写的有点乱,因为刚开始遇到了一堆问题。 实验一会有联网问题,下面紧接着解决一下。 注意虚拟机设置的默认网关要有网。 参考:vmware校园网虚拟机无法连接网络解决方法_大数据_十三川浪越-华为开发者空间 【11-Windows server 2016 DHCP服务…

『功能项目』战士的伤害型技能【45】

我们打开上一篇44战士职业平A怪物掉血的项目, 本章要做的事情是制作技能按钮,点鼠标点击时释放对范围内怪物的伤害技能 首先双击打开资源脚本下的Canvas预制体 制作技能栏 在资源商店中下载免费资源 - 技能图片 将技能图片拖拽至技能栏的Button按钮组件…

细说STM32单片机使用通用定时器生成固定占空比和可变占空比PWM波的方法

目录 一、本实例测试的目的 二、硬件和CubeMX项目配置 1、硬件开发板 2、项目配置 (1)定时器TIM2_CH1 (2)时钟和Debug (3) NVIC (4)GPIO 3、输出固定占空比的PWM波源码 &…

a√斗地主之顺子

题目描述 在斗地主扑克牌游戏中,扑克牌由小到大的顺序为:3,4,5.6,7.8,9,10,J,Q,K,A,2,玩家可以出的扑克牌阵型有:单张、对子、顺子、飞机、炸弹等。 其中顺子的出牌规则为:由至少5张由小到大连续递增的扑克牌组成,且不能包含2。 例如:(3.4.…

三、Kubernetes中的控制器的使用

一 什么是控制器 官方文档: 工作负载管理 | Kubernetes 控制器也是管理pod的一种手段 自主式pod:pod退出或意外关闭后不会被重新创建 控制器管理的 Pod:在控制器的生命周期里,始终要维持 Pod 的副本数目 Pod控制器是管理pod…