布尔运算00

news2024/12/25 9:27:07

题目链接

布尔运算

题目描述

注意点

  • 运算符的数量不超过 19 个
  • 布尔表达式由 0 (false)、1 (true)、& (AND)、 | (OR) 和 ^ (XOR) 符号组成
  • 算出有几种可使该表达式得出 result 值的括号方法

解答思路

  • 可以使用动态规划根据左右两侧区间不同结果相应组合数量计算得出当前区间不同结果相应组合数量,dp[i][j][k]表示第i个到第j个数字组合结果为k的组合数量
  • 初始先将dp[i][i][s.charAt(i) - ‘0’]设置为1
  • 三重循环计算dp[0][s.length() - 1][result]的值:第一重循环枚举区间长度为len时不同结果相应的组合数量;第二重枚举所有区间长度为len的不同区间中不同结果相应的组合数量;第三重循环枚举[i, j]的区间内所有的组合并计算组合相应结果的数量

代码

class Solution {
    public int countEval(String s, int result) {
        int n = s.length();
        // dp[i][j][k]表示第i个到第j个数字组合结果为k的组合数量
        int[][][] dp = new int[n][n][2];
        // 初始将每个位置的数字写到dp中
        for (int i = 0; i < n; i += 2) {
            dp[i][i][s.charAt(i) - '0'] = 1;
        }
        // 第一重循环枚举区间长度为len时不同结果相应的组合数量,每次跳两格方便找到下一个数字
        for (int len = 2; len < n; len += 2) {
            // 第二重枚举所有区间长度为len的不同区间中不同结果相应的组合数量
            for (int i = 0; i < n - len; i += 2) {
                int j = i + len;
                // 第三重循环枚举[i, j]的区间内所有的组合,组合数量可根据符号左右两侧的数字组合数量推出
                for (int k = i; k < j; k += 2) {
                    char operate = s.charAt(k + 1);
                    if (operate == '&') {
                        // 结果为0左右有一侧为0即可
                        dp[i][j][0] += dp[i][k][0] * dp[k + 2][j][0] + dp[i][k][0] * dp[k + 2][j][1] + dp[i][k][1] * dp[k + 2][j][0];
                        // 结果为1必须左右两侧都为1
                        dp[i][j][1] += dp[i][k][1] * dp[k + 2][j][1];
                    }
                    if (operate == '|') {
                        // 结果为0必须左右两侧都为0
                        dp[i][j][0] += dp[i][k][0] * dp[k + 2][j][0];
                        // 结果为1左右有一侧为1即可
                        dp[i][j][1] += dp[i][k][1] * dp[k + 2][j][1] + dp[i][k][0] * dp[k + 2][j][1] + dp[i][k][1] * dp[k + 2][j][0];
                    }
                    if (operate == '^') {
                        // 结果为0左右侧都为0或者左右侧都为1
                        dp[i][j][0] += dp[i][k][0] * dp[k + 2][j][0] + dp[i][k][1] * dp[k + 2][j][1];
                        // 结果为1左右侧有一侧为0,另一侧为1
                        dp[i][j][1] += dp[i][k][1] * dp[k + 2][j][0] + dp[i][k][0] * dp[k + 2][j][1];
                    }
                }
                
            }
        }
        return dp[0][n - 1][result];
    }
}

关键点

  • 动态规划的思想:怎么根据更小的区间组合推出更大的区间组合,怎么根据左右区间组合推出当前区间组合
  • 不同符号,左右两侧数字为0或1时分情况讨论

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

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

相关文章

Java---Maven详解

一段新的启程&#xff0c; 披荆斩棘而前&#xff0c; 心中的梦想&#xff0c; 照亮每个黑暗的瞬间。 无论风雨多大&#xff0c; 我们都将坚强&#xff0c; 因为希望的火焰&#xff0c; 在胸中永不熄灭。 成功不是终点&#xff0c; 而是每一步的脚印&#xff0c; 用汗水浇灌&…

2024年6月27日,欧盟REACH法规新增第31批1项SVHC高关注物质

ECHA公布第31批1项SVHC&#xff0c;物质已增至241项 2024年6月27日&#xff0c;ECHA公布第31批1项SVHC&#xff0c;总数达241项。新增物质未包括磷酸三苯酯&#xff0c;仍在评议中。REACH法规要求SVHC含量超0.1%需告知下游&#xff0c;出口超1吨须通报ECHA。SCIP通报要求SVHC含…

Java--回顾方法的定义

1.修饰符 public 公共的 修饰String类型 2.返回类型 返回的值得类型 返回值为String&#xff08;字符串&#xff09;类型 3.break continue return的区别 break&#xff0c;结束整个循环 continue&#xff0c;结束本次循环 return&#xff0c;结束整…

AI产品经理需要懂的算法和模型

本篇希望以精准推荐模型为案例通过全面的撰写将AI产品经理需要懂的算法和模型进行了系统的入门讲解。 一个产品经理经常疑惑的概念&#xff1a; 算法和模型的关系&#xff0c;产品经理懂得解决问题时将问题抽象为模型&#xff0c;对模型求解用算法&#xff0c;没有谁大谁小&a…

激光与相机融合标定汇总:提升融合算法的精度与可靠性(附github地址)

前言 随着科技的飞速发展&#xff0c;激光技术与相机技术的融合已成为推动智能化影像发展的重要力量。这种融合不仅提高了成像的精度和效率&#xff0c;还为相关行业带来了革命性的变革。在这篇博客中&#xff0c;我们将深入探讨激光与相机融合标定的原理及其在各个领域的应用…

从菌群代谢到健康影响——认识肠道丙酸和丁酸

谷禾健康 短链脂肪酸这一词经常出现在谷禾的文章和报告中&#xff0c;那你真的了解短链脂肪酸吗&#xff1f;短链脂肪酸(SCFA)主要是肠道微生物群在结肠内通过发酵碳水化合物(包括膳食和内源性碳水化合物&#xff0c;主要是抗性淀粉和膳食纤维)和一些微生物可利用的蛋白质而产生…

RabbitMQ 消息传递

消息何去何从 mandatory和immediate是channel.basicPublish方法中的两个参数&#xff0c;他们都有当消息传递过程中不可达目的地时将消息返回给生产者的功能。RabbitMQ提供的备份交换器可以将未能被交换器路由的消息&#xff08;没有绑定队列或者没有匹配的绑定&#xff09;存…

树莓派Pico

树莓派Pico是树莓派基金会推出的一款基于RP2040微控制器的微型计算机板&#xff0c;它是专为需要高性能微控制器的应用场景设计的&#xff0c;特别适合于需要实时控制、低功耗和小型化解决方案的项目。以下是树莓派Pico的详细介绍&#xff1a; ### 核心特点&#xff1a; - **基…

NAND闪存原厂铠侠加速推上市,预计10月完成IPO

NAND闪存原厂铠侠Kioxia拟趁着半导体市场回暖及企业财务状况显著提升的契机&#xff0c;加速推进其上市进程。 据报道&#xff0c;公司计划最快于8月底提交IPO申请&#xff0c;目标是在2024年10月末于东京证券交易所完成首次公开募股。此番上市动作不仅反映出市场复苏迹象&…

使用el-amap-info-window遇到的问题

使用的这个库https://github.com/yangyanggu/vue-amap 想要滚动amapInfoWindow里的内容&#xff0c;但不触发地图缩放 默认滚动amapInfoWindow里的内容&#xff0c;会触发地图缩放。看了C站一个大佬的文章解决了。 amapInfoWindow会自动滚动到顶部 我的amapInfoWindow里面用了…

【python】一篇文零基础到入门:快来玩吧~

本笔记材料源于&#xff1a; PyCharm | 创建你的第一个项目_哔哩哔哩_bilibili Python 语法及入门 &#xff08;超全超详细&#xff09; 专为Python零基础 一篇博客让你完全掌握Python语法-CSDN博客 0为什么安装python和pycharm&#xff1f; 不同于c&#xff0c;c&#xff0…

Windows server 2016.2019 .NET Framework 3.5安装包、安装步骤

windows server2019 操作系统 安装 sqlserver2008时提示缺少 .NET Frameword 3.5&#xff0c; 在功能里选择 .NET Frameword 3.5安装报错&#xff0c; 下载安装包&#xff0c;下载地址 https://download.csdn.net/download/qq445829096/89450429这里指定备份源路径 安装包解…

【应用开发二】GPIO操控(输出、输入、中断)

1 操控GPIO方式 控制目录&#xff1a;/sys/class/gpio /sys/class/gpio目录下文件如下图所示&#xff1a; 1.1 gpiochipX目录 功能&#xff1a;当前SoC所包含的所有GPIO控制器 i.mx6ull一共包含5个GPIO控制器&#xff0c;分别为GPIO1~5分别对应gpiochip0、gpiochip32、gpi…

javaSE知识点整理总结(上)

目录 一、面向对象 1. 类、对象、方法 2.面向对象三大特征 &#xff08;1&#xff09;封装 &#xff08;2&#xff09;继承 &#xff08;3&#xff09;多态 二、常用类 1.Object类 2.Array类 3.基本数据类型包装类 4.String类 5.StringBuffer类 6.Math类 7.Random…

韩顺平0基础学java——第32天

p638-652 Properties类 list&#xff1a;这个设备可以是一个流对象。 修改&#xff1a;如果该文件里没有Key&#xff0c;那即是创建&#xff0c;如果是有那就是修改。 继续坦克大战 防止敌人坦克重叠 满脑子都是今汐&#xff0c;亚达哟&#x1f62d;&#x1f62d;&#x1f6…

关于Mac mini 10G网口的问题

问题: 购入一个10G网口的Mac mini M2&#xff0c;将其和自己的2.5G交换机连接&#xff0c;使用共享屏幕进行远程操作的过程中出现了频率极高的卡顿&#xff0c;几乎是几秒钟卡一下&#xff0c;使用ping进行测试发现卡的时候就ping不通了。测试使用Mac mini的无线网和雷电转2.5G…

PSA制氮装置在化工行业的应用解析

PSA制氮装置作为一种可靠的氮气制备技术&#xff0c;在化工行业中发挥着越来越重要的作用。本文将详细探讨PSA制氮装置在化工行业的应用。 一、PSA制氮装置的工作原理 PSA制氮装置通过吸附剂的吸附选择性&#xff0c;在高压下吸附原料气中的杂质成分&#xff0c;如氧气、水蒸气…

微服务部署上线过程总结

目录 一、找到适合自己的部署方式 二、开始部署&#xff0c;先安装需要的环境 2.1 梳理一下都需要安装什么软件 2.2 配置数据库环境 2.3 配置redis 2.4 配置nacos 2.5 配置rabbitmq 2.6 配置docker环境 三、环境配置好了&#xff0c;开始部署后端 3.1 梳理后端都…

佛山禅城电脑城维修1台联想3650M5服务器 黄灯故障

佛山禅城一同行客户通过CSDN找到我们&#xff0c;经过对接&#xff0c;确认好服务器型号&#xff0c;和服务器大致故障&#xff0c;跟客户仔细的分析了引起故障大致的原因和解决的方式方法后&#xff0c;经过商务沟通&#xff0c;该同行考虑由我们安排工程师带配件到佛山禅城电…

光伏设计:光伏项目开发中最关键的一环

随着全球对可再生能源的需求不断增长&#xff0c;光伏技术作为其中的佼佼者&#xff0c;已经成为许多国家实现能源转型和应对气候变化的重要手段。在光伏项目的开发过程中&#xff0c;光伏设计作为最关键的一环&#xff0c;其重要性不言而喻。本文将从光伏设计的角度&#xff0…