leetcode 474. 一和零

2023.8.15

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m+1, vector<int>(n+1,0));//遍歷物品for(string str : strs){int num_0 = 0;int num_1 = 0;for(char c : str){if(c == '0') num_0++;else num_1++;}//遍歷二維背包for(int i=m; i>=num_0; i--){for(int j=n; j>=num_1; j--){dp[i][j] = max(dp[i][j] , 1 + dp[i-num_0][j-num_1]);}}}return dp[m][n];}
};

? ? ? ? 依舊是0-1背包問題的應用。?本題不易看出是0-1背包問題,因為本題的背包有兩個:m和n。因此需要定義一個二維的dp數組。數組strs中的一個個字符串就是我們的物品。dp[i][j]的含義為:兩背包大小分別為i和j時,所能裝的最多物品。

? ? ? ??在遍歷物品(即字符串數組)時,需要先將每個物品(字符串)的0和1個數統計起來。然后分別遍歷兩個背包。每次更新dp數組時,可以選擇取當前物品或者不取當前物品。 不取當前物品:dp[i][j] = dp[i][j];? 取當前物品:dp[i][j] = 1 + dp[i-num_0][j-num_1];? ?擇其最大的。

? ? ? ? 代碼如下:

class Solution {
public:int findMaxForm(vector<string>& strs, int m, int n) {vector<vector<int>> dp(m+1, vector<int>(n+1,0));//遍歷物品for(string str : strs){int num_0 = 0;int num_1 = 0;for(char c : str){if(c == '0') num_0++;else num_1++;}//遍歷二維背包for(int i=m; i>=num_0; i--){for(int j=n; j>=num_1; j--){dp[i][j] = max(dp[i][j] , 1 + dp[i-num_0][j-num_1]);}}}return dp[m][n];}
};

? ? ? ? 至此,做了四道0-1背包應用的相關題目,總結一下:

分割等和子集:是求:給定背包容量,能否裝滿這個背包。

最后一塊石頭的重量II:是求:給定背包容量,盡可能裝,最多能裝多少。

目標和:是求:給定背包容量,裝滿背包有多少種方法。

本題:是求:給定背包容量,裝滿背包最多有多少個物品。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/40889.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/40889.shtml
英文地址,請注明出處:http://en.pswp.cn/news/40889.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker 容器內無法使用vim命令 解決方法

目錄 1. 問題所示2. 原理分析3. 解決方法1. 問題所示 進入Docker容器后 無法使用vim編輯器,出現如下問題:bash: vim: command not found 如圖所示: 想著通過apt-get 安裝vim,出現如下問題: root@b9f0fd330d5b:/# apt-get install vim Reading package lists... Done B…

ZooKeeper介紹

ZooKeeper是一個開放源代碼的分布式協調服務。ZooKeeper的設計目標是將那些復雜且容易出錯的分布式一致性服務封裝起來&#xff0c;構成一個高效可靠的原語集&#xff0c;并以一系列簡單易用的接口提供給用戶使用。 ZooKeeper是一個典型的分布式數據一致性的解決方案&#xff0…

如何通過 Keras 中的活動正則化減少泛化誤差

活動正則化提供了一種鼓勵神經網絡學習原始觀察的稀疏特征或內部表示的方法。 在自動編碼器(稱為稀疏自動編碼器)和編碼器-解碼器模型中尋求稀疏學習表示是很常見的,盡管該方法通常也可用于減少過度擬合并提高模型泛化到新觀察值的能力。 在本教程中,您將發現 Keras API …

spring入門基本介紹及注入方式---詳細介紹

一&#xff0c;spring的簡介 Spring是一個開源框架&#xff0c;它由Rod Johnson創建。它是為了解決企業應用開發的復雜性而創建的。 提供了許多功能強大且易于使用的特性&#xff0c;使得開發者能夠更加輕松地構建可維護且可擴展的應用程序&#xff0c;簡單來說: Spring使用基…

kaggle注冊不顯示驗證碼

edge瀏覽器 1.點擊瀏覽器右上角三個點 2.點擊擴展 3.點擊管理擴展 4.點擊獲取Microsoft Edge擴展&#xff0c;在左上角輸入Head Editor 5.輸入https://www.azurezeng.com/static/HE-GoogleRedirect.json 6.下載后&#xff0c;點保存 成功&#xff01;

星際爭霸之小霸王之小蜜蜂(二)--類的使用

目錄 前言 一、將設置內容寫在一個類里 二、設置小蜜蜂的造型 三、設置貓蜜蜂的參數 四、繪制貓蜜蜂到窗口 總結 前言 昨天我們設置好了窗口&#xff0c;下面我們需要向窗口中添加元素了。 一、將設置內容寫在一個類里 我個人理解書上的意思是要創建一個類&#xff0c;將所有需…

基于CentOS 7 部署社區版Haproxy

HAProxy是法國開發者 威利塔羅(Willy Tarreau) 在2000年使用C語言開發的一個開源軟件&#xff0c;是一款具 備高并發(一萬以上)、高性能的TCP和HTTP負載均衡器&#xff0c;支持基于cookie的持久性&#xff0c;自動故障切換&#xff0c;支 持正則表達式及web狀態統計。 目錄 1…

Linux:shell腳本 正則表達式與AWK

一、正則表達式 由一類特殊字符及文本字符所編寫的模式&#xff0c;其中有些字符&#xff08;元字符&#xff09;不表示字符字面意義&#xff0c;而表示控制或通配的功能&#xff0c;類似于增強版的通配符功能&#xff0c;但與通配符不同&#xff0c;通配符功能是用來處理文件…

【LeetCode每日一題】——128.最長連續序列

文章目錄 一【題目類別】二【題目難度】三【題目編號】四【題目描述】五【題目示例】六【題目提示】七【解題思路】八【時間頻度】九【代碼實現】十【提交結果】 一【題目類別】 哈希表 二【題目難度】 中等 三【題目編號】 128.最長連續序列 四【題目描述】 給定一個未…

python re 模塊 正則表達式

一、正則表達式基本符號 ^ 表示匹配字符串的開始位置 (例外 用在中括號中[ ] 時,可以理解為取反,表示不匹配括號中字符串)$ 表示匹配字符串的結束位置* 表示匹配 零次到多次&#xff08;記憶方法&#xff1a;符號是星星&#xff0c;天上的星星可以是無數個也可以看不到&#x…

vue3+element-plus表格默認排序default-sort失效問題

場景 在使用動態數據渲染的場景&#xff0c;el-table設置默認屬性default-sort失效。 原因 el-table的default-sort屬性是針對靜態數據的&#xff0c;如果是動態數據&#xff0c;default-sort則無法監聽到。 案例&#xff1a;靜態數據 <template><el-table:data&…

馬斯克又出昏招、最瘋狂的舉動之一

馬斯克正在限制他不喜歡的新聞網站和競爭對手的流量。在 X&#xff08;原 Twitter&#xff09;上點擊紐約時報、路透社、Facebook、Instagram、Threads、Bluesky 和 Substack 的鏈接&#xff0c;X 故意增加 5 秒鐘的開啟延遲。 5 秒延遲&#xff0c;新的降權舉措&#xff1f; …

rust踩雷筆記(2)——一道hard帶來的思考[哈希表、字符串、滑動窗口]

今天被一道hard惡心壞了&#xff0c;算法不難&#xff0c;用C幾分鐘的事。用rust主要還是缺乏對語言的熟練度&#xff0c;記錄一下&#xff0c;主要的坑在下面這個操作&#xff1a; 對String取其中某個位置的char。 可能你會有疑問&#xff1a;這不是直接nth()取就行了么。沒錯…

聯想拯救者筆記本Win11系統鍵盤無法打字解決參考方法

一位好機友新購買的聯想拯救者筆記本在使用過程中突然發現整個鍵盤都不能使用了、不能打字、按任何按鍵都沒有反應&#xff0c;只有鼠標能正常操作&#xff1b;那么這是什么問題呢&#xff1f;能不能是筆記本的鍵盤壞了呢&#xff1f;還是筆記本出現了什么故障而引起鍵盤失靈呢…

LangChain手記 Evalutation評估

整理并翻譯自DeepLearning.AILangChain的官方課程&#xff1a;Evaluation&#xff08;源代碼可見&#xff09; 基于LLM的應用如何做評估是一個難點&#xff0c;本節介紹了一些思路和工具。 “從傳統開發轉換到基于prompt的開發&#xff0c;開發使用LLM的應用&#xff0c;整個工…

Linux 終端會話中,啟動任務并放到后臺運行

一、需求 linux要執行一個腳本&#xff0c;耗時很長&#xff0c;想要腳本在后臺運行&#xff0c;用戶注銷或終端軟件關閉時也可以繼續運行。 二、實現 1、nohup命令 腳本在后臺運行 nohup 是在 Linux 和類 Unix 系統中使用的一個命令&#xff0c;用于在后臺運行程序&#x…

Python爬蟲——scrapy_當當網圖書管道封裝

創建爬蟲項目 srcapy startproject scrapy_dangdang進入到spider文件里創建爬蟲文件&#xff08;這里爬取的是青春文學&#xff0c;仙俠玄幻分類&#xff09; srcapy genspider dang http://category.dangdang.com/cp01.01.07.00.00.00.html獲取圖片、名字和價格 # 所有的se…

c語言——查找特定字符在字符串中出現的次數

fgets 函數用于從標準輸入&#xff08;stdin&#xff09;中讀取一行字符串&#xff0c; 并將其存儲在指定的字符數組 str 中。 sizeof str/sizeof str[0] 是用來計算字符數組 str 的大小。 這個表達式計算的結果是字符數組 str 可以容納的元素個數&#xff08;包括…

【IMX6ULL驅動開發學習】07.驅動程序分離的思想之平臺總線設備驅動模型和設備樹

一、驅動程序分離的思想 【IMX6ULL驅動開發學習】05.字符設備驅動開發模板&#xff08;包括讀寫函數、poll機制、異步通知、定時器、中斷、自動創建設備節點和環形緩沖區&#xff09;_阿龍還在寫代碼的博客-CSDN博客 之前編寫驅動程序的代碼存在不少弊端&#xff1a;移植性差…

數學建模之“聚類分析”原理詳解

一、聚類分析的概念 1、聚類分析&#xff08;又稱群分析&#xff09;是研究樣品&#xff08;或指標&#xff09;分類問題的一種多元統計法。 2、主要方法&#xff1a;系統聚類法、有序樣品聚類法、動態聚類法、模糊聚類法、圖論聚類法、聚類預報法等。這里主要介紹系統聚類法…