代碼隨想錄算法訓練營Day 42| 動態規劃part04 | 01背包問題理論基礎I、01背包問題理論基礎II、416. 分割等和子集

代碼隨想錄算法訓練營Day 42| 動態規劃part04 | 01背包問題理論基礎I、01背包問題理論基礎II、416. 分割等和子集


文章目錄

  • 代碼隨想錄算法訓練營Day 42| 動態規劃part04 | 01背包問題理論基礎I、01背包問題理論基礎II、416. 分割等和子集
  • 01背包問題理論基礎
    • 一、01背包問題
    • 二、一維dp
    • 三、二維dp
  • 416. 分割等和子集
    • 一、dp


01背包問題理論基礎

在這里插入圖片描述

一、01背包問題

有n件物品和一個最多能背重量為w 的背包。第i件物品的重量是weight[i],得到的價值是value[i] 。每件物品只能用一次,求解將哪些物品裝入背包里物品價值總和最大。在這里插入圖片描述

二、一維dp

def test_1_wei_bag_problem(weight, value, bagWeight):# 初始化dp = [0] * (bagWeight + 1)for i in range(len(weight)):  # 遍歷物品for j in range(bagWeight, weight[i] - 1, -1):  # 遍歷背包容量dp[j] = max(dp[j], dp[j - weight[i]] + value[i])return dp[bagWeight]if __name__ == "__main__":weight = [1, 3, 4]value = [15, 20, 30]bagweight = 4result = test_1_wei_bag_problem(weight, value, bagweight)print(result)

三、二維dp

def test_2_wei_bag_problem1(weight, value, bagweight):# 二維數組dp = [[0] * (bagweight + 1) for _ in range(len(weight))]# 初始化for j in range(weight[0], bagweight + 1):dp[0][j] = value[0]# weight數組的大小就是物品個數for i in range(1, len(weight)):  # 遍歷物品for j in range(bagweight + 1):  # 遍歷背包容量if j < weight[i]:dp[i][j] = dp[i - 1][j]else:dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i])return dp[len(weight) - 1][bagweight]if __name__ == "__main__":weight = [1, 3, 4]value = [15, 20, 30]bagweight = 4result = test_2_wei_bag_problem1(weight, value, bagweight)print(result)

416. 分割等和子集

題目鏈接

一、dp

class Solution(object):def canPartition(self, nums):""":type nums: List[int]:rtype: bool"""if sum(nums) % 2 != 0:return False# dp[i]中的i表示背包內總和# 題目中說:每個數組中的元素不會超過 100,數組的大小不會超過 200# 總和不會大于20000,背包最大只需要其中一半,所以10001大小就可以了2dp = [0]*10001 # 或者dp =[0]*(target+1)target = sum(nums)//2for i in range(1,len(nums)):for j in range(target,nums[i]-1,-1):dp[j]=max(dp[j],dp[j-nums[i]]+nums[i])      return dp[target]==target

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

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

相關文章

WSL設置啟動時自動啟動docker服務或其他服務

方式一: Windows系統的WSL,當windows關機再開機后,WSL等于是重新開機的,默認情況下,不會啟動Docker服務。例如在Ubuntu 22.04中,需要使用命令 service docker start來啟動。由于我習慣關機斷電,因此每天開機打開WSL后都要手動輸入這個命令,非常麻煩。所以找了一個方法…

Redis教程——哨兵

在上篇文章我們學習了Redis教程——主從復制&#xff0c;這篇文章我們學習Redis教程——哨兵監控。 在主從復制中如果主機發生宕機&#xff0c;從機Redis會一直等到主機的恢復&#xff0c;這樣會導致只能進行讀操作&#xff0c;不能進行寫操作&#xff0c;這大大降低了系統的高…

資料同化 | 搭建docker環境-1

Community Gridpoint Statistical Interpolation (GSI) system DTC 是一個分布式設施&#xff0c;NWP 社區可以在這里測試和評估用于研究和操作的新模型和技術。 DTC的目標包括&#xff1a; 鏈接研究和操作社區 研究成果轉化為實際操作的速度 加快改善天氣預報 開發和測試有…

Cocos Creator 3.8.x 透明帶滾動功能的容器

ScrollView 是一種帶滾動功能的容器 1、刪除ScrollView下Sprite組件的SpriteFrame 2、ScrollView下scrollBar的Sprite組件的Color設為&#xff1a;FFFFFF00 3、ScrollView下view的Graphics組件的FillColor設為&#xff1a;FFFFFF00

IP代理如何幫助SEO進行優化?

IP代理在SEO優化中扮演著重要的角色&#xff0c;它通過多種方式幫助提升網站的搜索排名和可見性。以下是IP代理如何幫助SEO進行優化的詳細闡述&#xff1a; 第一點&#xff0c;數據采集與分析&#xff1a;在SEO過程中&#xff0c;大量的數據是必不可少的。通過使用IP代理&…

如何區分os.walk()與os.scandir()

os.walk() import os for dirpath, dirname, files in os.walk(./):# dirpath 當前——路徑# dirname 當前——路徑——下——文件夾名——列表# files 當前——路徑——下——文件——列表dirpath 當前路徑 ./ dirname 當前路徑下面文件夾名稱組成的列表&#xff0c;共3個文…

c++ std::shared_ptr學習

背景 c中智能指針shared_ptr用于自動管理資源&#xff0c;通過引用計數來記錄資源被多少出地方使用。在不使用資源時&#xff0c;減少引用計數&#xff0c;如果引用計數為0&#xff0c;表示資源不會再被使用&#xff0c;此時會釋放資源。本文記錄對c中std::shared_ptr的源碼學習…

攻防世界PHP2

1、打開靶機鏈接http://61.147.171.105:49513/&#xff0c;沒有發現任何線索 2、嘗試訪問http://61.147.171.105:49513/index.php&#xff0c;頁面沒有發生跳轉 3、嘗試將訪問 嘗試訪問http://61.147.171.105:49513/index.phps index.php 和 index.phps 文件之間的主要區別在于…

GNU Radio創建時間戳 C++ OOT塊

文章目錄 前言一、創建自定義的 C OOT 塊1、創建 timestamp_sender C OOT 模塊①、創建 timestamp_sender OOT 塊②、修改 C 代碼 2、創建 timestamp_receiver C OOT 模塊①、創建 timestamp_receiver OOT 塊②、修改 C 代碼 3、創建 delayMicroSec C OOT 模塊①、創建 delayMi…

Vue3實戰筆記(20)—封裝頭部導航組件

文章目錄 前言一、封裝頭部導航欄二、使用步驟總結 前言 Vue 3 封裝頭部導航欄有助于提高代碼復用性、統一風格、降低維護成本、提高可配置性和模塊化程度&#xff0c;同時還可以實現動態渲染等功能&#xff0c;有利于項目開發和維護。 一、封裝頭部導航欄 封裝頭部導航欄&am…

HFSS學習-day4-建模操作

通過昨天的學習&#xff0c;我們已經熟悉了HFSS的工作環境&#xff1b;今天我們來講解HFSS中創建物體模型的縣體步驟和相關操作。物體建模是HFSS仿真設計工作的第一步&#xff0c;HFSS中提供了諸如矩形、圓面、長方體圓柱體和球體等多種基本模型(Primitive)&#xff0c;這些基本…

新書速覽|MATLAB科技繪圖與數據分析

提升你的數據洞察力&#xff0c;用于精確繪圖和分析的高級MATLAB技術。 本書內容 《MATLAB科技繪圖與數據分析》結合作者多年的數據分析與科研繪圖經驗&#xff0c;詳細講解MATLAB在科技圖表制作與數據分析中的使用方法與技巧。全書分為3部分&#xff0c;共12章&#xff0c;第1…

tp8 設置空控制器和空方法

1、空控制器 單應用模式下&#xff0c;我們可以給項目定義一個Error控制器類 <?phpnamespace app\controller;class Error {/*** 空控制器中重寫魔術方法__call可以實現自定義錯誤提示&#xff0c;在這里可以提示找不到控制器* 注意&#xff1a;在基礎控制器BaseControll…

精英都是時間控!職場精英的完美一天~~~谷歌FB都在用的時間管理術!

如何超高效使用24小時 每個人的一天都只有24小時&#xff0c;使用時間的方法將決定整個人生。時間管理術并不提倡把自己忙死榨干&#xff0c;而是通過在合適的時間做合適的事情&#xff0c;把大腦機能發揮到極致&#xff0c;從而提高效率&#xff0c;節省下更多時間用于生活與…

(項目)-KDE巡檢報告(模板

金山云于12月26日對建行共計【30】個KDE集群,合計【198】臺服務器進行了巡檢服務。共發現系統風險【135】條,服務風險【1912】條,服務配置風險【368】條。 一、系統風險 1、風險分析(圖片+描述) (1)磁盤使用率高 問題描述多個集群的多臺服務器磁盤使用率較高,遠超過…

答辯PPT模版如何選擇?aippt快速生成

這些網站我愿稱之為制作答辯PPT的神&#xff01; 很多快要畢業的同學在做答辯PPT的時候總是感覺毫無思路&#xff0c;一竅不通。但這并不是你們的錯&#xff0c;對于平時沒接觸過相關方面&#xff0c;第一次搞答辯PPT的人來說&#xff0c;這是很正常的一件事。一個好的答辯PPT…

右鍵使用VSCode打開文件/文件夾目錄

右鍵使用VSCode打開文件/文件夾目錄 使用新電腦或清空了注冊列表之后&#xff0c;點擊右鍵“使用vscode”打開文件夾消失了&#xff0c;可以通過更改注冊列表增加回來。 實現&#xff1a; 右鍵在目錄空白處使用vscode打開目錄右鍵-用vscode(當前窗口)打開文件或目錄 右鍵-用vs…

簡述RocketMQ系統架構及其相關概念

一、概述 RocketMQ是一款高性能、高吞吐量的分布式消息隊列系統&#xff0c;它采用了分布式架構&#xff0c;支持多生產者和消費者并發讀寫&#xff0c;具有高可用性、高吞吐量、低延遲等特點。本文將對RocketMQ的系統架構進行詳細解析。 二、架構設計 RocketMQ采用了分布式架…

入門物聯網就是這么簡單——青創智通

工業物聯網解決方案-工業IOT-青創智通 MQTT&#xff0c;全稱為Message Queuing Telemetry Transport&#xff0c;是一種輕量級的發布/訂閱消息傳輸協議&#xff0c;廣泛應用于物聯網領域。 MQTT協議以其高效、可靠、靈活的特性&#xff0c;成為物聯網設備間通信的理想選擇。本…

升級版ComfyUI InstantID 換臉:FaceDetailer + InstantID + IP-Adapter

在使用ComfyUI的InstantID進行人臉替換時&#xff0c;一個常見問題是該工具傾向于保留原始參考圖的構圖&#xff0c;即使用戶的提示詞與之不符。 例如&#xff0c;即使用戶提供的是大頭照并請求生成全身照&#xff0c;結果仍是大頭照&#xff0c;沒有顯示出用戶所期望的構圖。…