【力扣】刷題備忘錄-動歸-343. 整數拆分

343. 整數拆分

class Solution {
public:int integerBreak(int n) {vector<int> dp(n+1);dp[2] = 1;for (int i = 3; i <= n; i++) {for (int j = 1; j < i - 1; j++){ // 這里j的最大值去到i-2就可以,這時i - j = 2 正好能用初始化的值dp[i] = max(dp[i], max(j * dp[i - j], j * (i - j))); // 1. 執行拆分 有兩種可能的來源 //2. 還要和dp[i]去比 然后更新// std::cout << "i的當前值是:" << i << std::endl;// std::cout << "dp i的當前值是:" << dp[i] << std::endl;}}return dp[n];}
};
  1. 這題難點在于想到 有兩種可能的來源 一個是當前拆分后直接相乘的結果 另一個是拆出來的數字對應到dp table上的解相乘的結果
  2. 優化點在于想到 拆分相乘的時候j不需要去查dp[j]。
  • 至于原因,代碼隨想錄給的是因為拆分j的情況,在遍歷j = 1 to i -2 的過程中都考慮到了。
  • 我認為還有一個解釋是,把這個求解過程展開,比如,dp[5] = 2 × 3, dp[6] = 3 × 3等,就會發現其實最大值都是由2 3組成的。所以把代碼又優化成了下面這樣:
class Solution {
public:int integerBreak(int n) {if (n <= 3) return n -1; // 這里要記得處理,不然當n<=3的時候,循環里面dp[4]取不到值 會報錯vector<int> dp(n+1);dp[2] = 1;dp[3] = 2;for (int i = 4; i <= n; i++) {for (int j = 1; j <= 3; j++){  // 這里只用考慮j <= 3的情況dp[i] = max(dp[i], max(j * dp[i - j], j * (i - j))); }}return dp[n];}
};

其實分析到這里也可以寫貪心了,但二刷的事情就留給二刷去做吧,這個優化方案其實已經不是動歸本身了,而是基于數學做的改進了。

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

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

相關文章

系統報錯;由于找不到hid.dll,無法繼續執行代碼”的解決方案分享

在計算機使用過程中&#xff0c;我們可能會遇到一些錯誤提示&#xff0c;其中之一就是“找不到hid.dll&#xff0c;無法繼續執行代碼”。這個錯誤提示通常表示計算機缺少了一個重要的動態鏈接庫文件&#xff0c;即hid.dll。本文將詳細介紹hid.dll丟失對電腦的影響以及hid.dll是…

【Python網絡爬蟲入門教程2】成為“Spider Man”的第二課:觀察目標網站、代碼編寫

Python 網絡爬蟲入門&#xff1a;Spider man的第二課 寫在最前面觀察目標網站代碼編寫 第二課總結 寫在最前面 有位粉絲希望學習網絡爬蟲的實戰技巧&#xff0c;想嘗試搭建自己的爬蟲環境&#xff0c;從網上抓取數據。 前面有寫一篇博客分享&#xff0c;但是內容感覺太淺顯了…

vite腳手架,配置動態生成路由,添加不同的layout以及meta配置

實現效果&#xff0c;配置了layout和對應的路由的meta 我想每個模塊添加對應的layout&#xff0c;下邊演示一層layout及對應的路由 約束規則&#xff1a; 每個模塊下&#xff0c;添加對應的 layout.vue 文件 每個文件夾下的 index.vue 是要渲染的頁面路由 每個渲染的頁面路由對…

Appium python自動化測試系列之移動自動化測試!

1.1 移動自動化測試現狀 因為軟件行業越來越發達&#xff0c;用戶的接受度也在不斷提高&#xff0c;所以對軟件質量的要求也隨之提高&#xff0c;當然這個也要分行業&#xff0c;但這個還是包含了大部分。因為成本、質量的變化現在對自動化測試的重視度越來越高&#xff0c;在…

CTF-misc(1)圖片隱寫

筆記目錄 滲透測試工具(1)wireshark滲透測試工具(2)Nmap滲透測試工具(3)BurpsuiteAWD比賽(1)AWD入門攻略大綱CTF-Web(2)SQL注入CTF-Web(3)文件上傳漏洞 圖片隱寫目錄 (1)GIf和二維碼隱寫 二維碼補全 二維碼繪圖 Gif規律分析 (2)文本附加圖片隱寫 (3)IHDR文件頭修復圖片寬高 (…

linux端口轉發

使用iptables 例如要將本地的8080端口轉發到80端口&#xff0c;你可以使用以下命令&#xff1a; sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080這將把進入80端口的流量重定向到8080端口。 使用socat 另一種方法是使用socat工具。首先&am…

?Unity 搭建UDP服務端(02)接收客戶端消息

客戶端在上一篇 由于服務器邏輯寫的較為簡單 所以直接上代碼了~ using System; using System.Net; using System.Net.Sockets; using System.Text; using UnityEngine;public class UdpServer : MonoBehaviour {public static UdpServer instance;private void Awake(){if (…

Springboot管理系統數據權限過濾——ruoyi實現方案

本文主要簡述&#xff0c;Ruoyi框架使用的權限過濾實現方案&#xff0c;實現簡單易懂。主要知識點有&#xff1a; 注解定義&#xff1b;面向切面編程&#xff0c;在執行有數據權限注解的方法之前獲取用戶組織權限&#xff0c;拼接到domain對象的params參數中&#xff1b; 1. …

AI:100-基于卷積神經網絡的農作物生長狀態監測

?? 本文選自專欄:人工智能領域200例教程專欄 從基礎到實踐,深入學習。無論你是初學者還是經驗豐富的老手,對于本專欄案例和項目實踐都有參考學習意義。 ??? 每一個案例都附帶有在本地跑過的核心代碼,詳細講解供大家學習,希望可以幫到大家。歡迎訂閱支持,正在不斷更新…

基于CMT2300A定制的模組諧波測量及調試事例

1.1 芯片介紹 CMT2300A華普微推出的一款超低功耗 Sub-1GHz 射頻收發器&#xff0c;是一款SPI接口射頻前端芯片&#xff0c;調制方式支持OOK (G)FSK 、(G)MSK&#xff0c;速率最大可以做到300 kbps&#xff0c;休眠大概1uA&#xff0c;功率最大可以做到20dB&#xff0c;但各國的…

Android 刪除瀏覽器導航頁面修改默認主頁

Android 刪除瀏覽器導航頁面修改默認主頁 近來收到客戶需求反饋&#xff0c;需要刪除瀏覽器導航頁面并將百度設置為默認主頁&#xff0c;具體修改參照如下&#xff1a; 刪除瀏覽器導航頁面&#xff1a; /vendor/mediatek/proprietary/packages/apps/Browser/src/com/android…

軟文怎么寫才能讓消費者行動起來?媒介盒子分享

軟文的本質是營銷&#xff0c;做營銷文案不是玩文字藝術&#xff0c;它需要洞察用戶需求&#xff0c;懂產品&#xff0c;了解賣點&#xff0c;懂營銷&#xff0c;懂消費心理&#xff0c;最終讓消費者行動起來。有些文案可能在你看起來遣詞造句和配圖都很一般&#xff0c;但就是…

分布式uuid常用的算法

1、雪花算法介紹 面試官&#xff1a;集群高并發情況下如何實現分布式唯一全局id生成&#xff1f; - 墨天輪 2、百度的UidGenerator 介紹&#xff0c;適合容器化配置&#xff0c;同時兼容springboot&#xff0c;只需要mysql數據庫&#xff0c; https://github.com/baidu/uid-…

Python辦公之Excel篇

1.準備環境 Python版本&#xff1a;3.6.5 IDE集成開發環境&#xff1a;pycharm Python庫選擇&#xff1a;openpyxl openpyxl操作的excel文件以xlsx結尾。 基礎命令 查看 Python 版本 python --version查看 pip 版本 pip --version安裝openxlsx pip install openpyxl -i…

9.靜態路由

靜態路由 中小型網絡都會用到&#xff0c;防火墻核心交換機用的很多&#xff0c;一般是用在出口 路由表&#xff1a;路由器用來轉發數據包唯一的依據 NextHop下一跳 Static靜態路由需要手動設置 ip route-static 目標網段 掩碼 下一跳例如&#xff1a;ip route-static 192…

QT講程序打包成安裝包讓任何人可以使用

&#x1f482; 個人主頁:pp不會算法v &#x1f91f; 版權: 本文由【pp不會算法v】原創、在CSDN首發、需要轉載請聯系博主 &#x1f4ac; 如果文章對你有幫助、歡迎關注、點贊、收藏(一鍵三連)和訂閱專欄哦 文章目錄 1、release模式下編譯2、windeploy 打包發布3、使用inno setu…

node.js express cors解決跨域

目錄 什么是跨域 示例 postman請求 前端請求 cors中間件解決跨域 流程 配置cors參數 什么是跨域 跨域&#xff08;Cross-Origin&#xff09;是指在 Web 開發中&#xff0c;當一個網頁的源&#xff08;Origin&#xff09;與另一個網頁的源不同時&#xff0c;就發生了跨域…

day6 arm

main.c #include "uartt.h"//封裝延時函數void delay(int ms){int i,j;for(i0;i<ms;i){for(j0;j<2000;j);}}int main(){//串口初始化uart4_init();//燈初始化led_init();//char a;char *s;while(1){myputchar(\n);myputchar(\r);//從串口讀取一個字符// amyget…

手把手教你反編譯小程序

本次實驗環境 操作系統: win10 10.0.19042 node: v14.17.0 微信開發者工具: Stable 1.05.2110290 前期準備 在電腦端安裝模擬器工具&#xff0c;這里以夜神模擬器為例&#xff0c; 在模擬器中安裝微信&#xff1a;用于微信打開小程序時加載小程序包。在模擬器中文件管理器&…

論文筆記:A review on multi-label learning

一、介紹 傳統的監督學習是單標簽學習&#xff0c;但是現實中一個實例可能對應多個標簽。這篇文章介紹了多標簽分類的定義和評價指標、多標簽學習的算法還有其他相關的任務。 二、問題相關定義 2.1 多標簽學習任務 假設 X R d X R^d XRd&#xff0c;表示d維的輸入空間&am…