布尔运算-区间dp

面试题 08.14. 布尔运算 - 力扣(LeetCode)

Solution

这题的思路比较直接,就是枚举最后一个进行计算的运算符,但是在实现过程中需要注意,定义范式f(l,r)表示l到r范围,l和r必须为数字,l+1,r-1为运算符,返回值是一个二元组,包含结果为0的方案数和结果为1的方案数。

#include<iostream>
#include<vector>
using namespace std;class Solution {
public://首先知道偶数位上一定是0或者1,奇数位上一定是运算符//每次去枚举最后一个进行计算的运算符int countEval(string s, int result) {int n = s.length();int dp[45][45][2];for (int i = 0; i < 45; ++i) {for (int j = 0; j < 45; ++j) {dp[i][j][0] = -1;}}vector<int>ans = f1(s, 0, n - 1, dp);return ans[result];}//规定一个范式,f函数中的区间[l,r]一定要保证l为数字,r为数字,l+1和r-1为运算符vector<int> f1(string s, int l, int r, int dp[45][45][2]) {if (dp[l][r][0] != -1) {return { dp[l][r][0],dp[l][r][1] };}if (l > r) return { 0,0 };if (l == r) {int ans0 = (s[l] == '1') ? 0 : 1;int ans1 = (s[l] == '1') ? 1 : 0;return { ans0,ans1 };}int res0 = 0, res1 = 0;//枚举最后一个进行计算的运算符的位置for (int m = l + 1; m <= r - 1; m += 2) {vector<int>ans_left = f1(s, l, m - 1, dp);vector<int>ans_right = f1(s, m + 1, r, dp);int ans0, ans1;if (s[m] == '|') {ans0 = ans_left[0] * ans_right[0];ans1 = ans_left[0] * ans_right[1];ans1 += ans_left[1] * ans_right[0];ans1 += ans_left[1] * ans_right[1];}else if (s[m] == '&') {ans0 = ans_left[0] * ans_right[0];ans0 += ans_left[0] * ans_right[1];ans0 += ans_left[1] * ans_right[0];ans1 = ans_left[1] * ans_right[1];}else {ans0 = ans_left[0] * ans_right[0];ans0 += ans_left[1] * ans_right[1];ans1 = ans_left[0] * ans_right[1];ans1 += ans_left[1] * ans_right[0];}res0 += ans0;res1 += ans1;}dp[l][r][0] = res0, dp[l][r][1] = res1;return { res0,res1 };}
};int main() {return 0;
}

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

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

相关文章

MyBatis-Plus 扩展全局方法

1.文件内容package com.ruoyi.business.mybatisplus.base;import com.baomidou.mybatisplus.core.conditions.Wrapper; import com.baomidou.mybatisplus.extension.service.IService;import java.util.List;/*** 扩展的 Service 接口* 所有自定义 Service 接口都需要继承此接口…

13.Linux OpenSSH 服务管理

文章目录Linux OpenSSH 服务管理环境准备OpenSSH 服务介绍SSH 介绍SSH 建立连接的过程加密类型双向加密过程使用 ssh 访问远端CLIssh 工具演示ssh工具配置文件配置 ssh 密钥认证ssh 故障模拟故障模拟排故故障自定义 SSH 服务配置文件禁止 root 登录禁止密码登录只允许特定用户登…

速通ACM省铜第五天 赋源码(MEX Count)

目录 引言&#xff1a; MEX Count 题意分析 逻辑梳理 代码实现 结语&#xff1a; 引言&#xff1a; 本来&#xff0c;今天我是想着出俩题或三题题解的&#xff0c;但是在打第一题的时候就天塌了&#xff0c;导致今天就只搓了一道题&#xff0c;这题的难度在CF中为1300的水准&…

【数据结构与算法-Day 27】堆的应用:从堆排序到 Top K 问题,一文彻底搞定!

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

企业即时通讯保障企业通讯安全,提升企业部门协作效率

在当今数字化转型的大潮中&#xff0c;企业即时通讯软件已从单纯的沟通工具&#xff0c;逐步演变为保障企业数据安全的核心基础设施。吱吱企业即时通讯软件通过“私有化部署全流程加密”的双重机制&#xff0c;为企业构建了一套集“通讯安全”与“部门协作”于一体的数字化解决…

《华为变革法:打造可持续进步的组织》读书笔记

推荐序一&#xff1a;变革是企业活下去的基础&#xff08;胡彦平&#xff09;华为前常务副总裁、变革指导委员会成员胡彦平在序言中强调&#xff0c;企业存续的核心命题是应对不确定性&#xff0c;而变革能力是破解这一命题的唯一答案。他以华为 30 余年的发展历程为例&#xf…

第二篇:排序算法的简单认识【数据结构入门】

排序算法的分类标准 时间复杂度分类 a. 简单排序算法&#xff1a;时间复杂度O(n)&#xff0c;冒泡排序、选择排序、插入排序&#xff1b; b. 高级排序算法&#xff1a;时间复杂度O(n logn)&#xff0c;快速排序、归并排序、堆排序&#xff1b; c. 线性排序算法&#xff1a;时间…

快速掌握Dify+Chrome MCP:打造网页操控AI助手

你是否曾经希望那些强大的开源大模型能更贴合你的专业领域&#xff0c;或者学会模仿你的行文风格&#xff1f;其实&#xff0c;实现这个目标的关键就在于“微调”。曾几何时&#xff0c;微调模型是大公司的专属游戏——动不动就需要几十张GPU和复杂的分布式训练技术。 而现在&…

单词记忆-轻松记忆10个实用英语单词(15)

1. repaint含义&#xff1a;重新油漆 读音标注&#xff1a;/ˌriːˈpeɪnt/ 例句&#xff1a;We need to repaint the walls after the repairs. 译文&#xff1a;修理完成后需要重新粉刷墙壁。 衍生含义&#xff1a;重新绘制&#xff08;图像场景&#xff09;&#xff1b;翻新…

visual studio快捷键

1.visual studio代码格式化快捷键 1.CtrlA&#xff08;全选&#xff09; 2.CtrlK 3.CtrlF2.多行注释 1.Ctrlk 2.Ctrlc2.多行取消注释 1.Ctrlk 2.Ctrlu

Django全栈班v1.04 Python基础语法 20250913 下午

练习&#xff1a;个人信息收集器 任务&#xff1a;创建一个个人信息收集和展示程序 要求&#xff1a; 收集用户的姓名&#xff0c;年龄&#xff0c;城市&#xff0c;爱好验证年龄输入&#xff0c;必须是正数格式化输出用户信息计算用户出生年份 name input("请输入姓名&a…

学习海康VisionMaster之字符缺陷检测

前言&#xff1a;差不多三个月没更新了&#xff0c;天天码代码&#xff0c;实在是太忙了&#xff0c;有时候也在想这么忙到底是不是工作方法的问题&#xff0c;怎么样才能变成大师呢&#xff01; 一&#xff1a;进一步学习 今天学习下VisionMaster中的字符缺陷检测&#xff1…

若依4.8.1打包war后在Tomcat无法运行,404报错的一个解决方法

背景 最近使用若依4.8.1进行二次开发&#xff0c;接着尝试打包成war包进行部署&#xff0c;结果出现了404&#xff0c;提示“HTTP状态 404 - 未找到&#xff0c;请求的资源[/ruoyi-admin/]不可用”&#xff0c;翻了网上的教程&#xff0c;包括看了官方的解疑都没有说到该情况。…

华清远见25072班网络编程学习day6

重点内容&#xff1a;数据库基本概念:数据&#xff08;Data&#xff09;&#xff1a;能够输入计算机并能被计算机程序识别和处理的信息集合数据 &#xff08;Database&#xff09;数据库是在数据库管理系统管理和控制之下&#xff0c;存放在存储介质上的数据集合重要概念&#…

机器学习-网络架构搜索

Neural Architecture Search&#xff08;NAS&#xff09; 一个神经网络有不同类型的超参数 拓扑结构&#xff1a;resnet&#xff0c;mobilenet 单独层&#xff1a;核大小&#xff0c;卷积层的通道&#xff0c;输出隐藏单元的个数NAS自动设计神经网络 如何设计搜索空间 如何探索…

云手机在办公领域中自动化的应用

云手机在办公自动化领域正逐渐展现出强大的潜力&#xff0c;以下是其在办公中自动化应用的多方面介绍&#xff1a;企业借助云手机搭载的办公软件&#xff0c;可实现文档处理自动化&#xff0c;对于重复性文档任务&#xff0c;如制作每月固定格式的销售报告、财务报表等&#xf…

c++多线程(3)------休眠函数sleep_for和sleep_until

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 这两个函数都定义在 头文件中&#xff0c;属于 std::this_thread 命名空间&#xff0c;用于让当前线程暂停执行一段时间。函数功能sleep_for(rel_time)让当前线程休眠一段相对时间&…

Intel RealSense D455深度相机驱动安装与运行

Intel RealSense D455深度相机安装过程遇到过一些报错&#xff0c;所以记录一下安装过程&#xff01;&#xff01;&#xff01;以后方便回顾。 1.安装最新的IntelRealSense SDK2.0 (1) 注册服务器的公钥 sudo apt-get update && sudo apt-get upgrade && su…

从异步到半同步:全面解读MySQL复制的数据一致性保障方案

MySQL 主从复制&#xff08;Replication&#xff09;是其最核心的高可用性和扩展性功能之一。它的原理是将一个 MySQL 实例&#xff08;称为主库 Master&#xff09;的数据变更&#xff0c;自动同步到另一个或多个 MySQL 实例&#xff08;称为从库 Slave&#xff09;的过程。下…

PostgreSQL GIN 索引揭秘

文章目录什么是GIN Index?示例场景GIN Index的原理GIN Index结构MetapageEntriesLeaf PagesEntry page 和 Leaf page 的关系Posting list 和posting tree待处理列表&#xff08;Pending List&#xff09;进阶解读GIN index索引结构总结什么是GIN Index? GIN (Generalized In…