布爾運算-區間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
英文地址,請注明出處:http://en.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…