精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

動態規劃:整數拆分,你要怎么拆?

開發 前端
給定一個正整數 n,將其拆分為至少兩個正整數的和,并使這些整數的乘積最大化。返回你可以獲得的最大乘積。

 [[375522]]

整數拆分

給定一個正整數 n,將其拆分為至少兩個正整數的和,并使這些整數的乘積最大化。返回你可以獲得的最大乘積。

示例1:

  • 輸入: 2
  • 輸出: 1
  • 解釋: 2 = 1 + 1, 1 × 1 = 1。

示例 2:

  • 輸入: 10
  • 輸出: 36
  • 解釋: 10 = 3 + 3 + 4, 3 × 3 × 4 = 36。
  • 說明: 你可以假設 n 不小于 2 且不大于 58。

思路

看到這道題目,都會想拆成兩個呢,還是三個呢,還是四個....

我們來看一下如何使用動規來解決。

動態規劃

動規五部曲,分析如下:

1.確定dp數組(dp table)以及下標的含義

dp[i]:分拆數字i,可以得到的最大乘積為dp[i]。

dp[i]的定義講貫徹整個解題過程,下面哪一步想不懂了,就想想dp[i]究竟表示的是啥!

2.確定遞推公式

可以想 dp[i]最大乘積是怎么得到的呢?

其實可以從1遍歷j,然后有兩種渠道得到dp[i].

一個是j * (i - j) 直接相乘。

一個是j * dp[i - j],相當于是拆分(i - j),對這個拆分不理解的話,可以回想dp數組的定義。

那有同學問了,j怎么就不拆分呢?

j是從1開始遍歷,拆分j的情況,在遍歷j的過程中其實都計算過了。

那么從1遍歷j,比較(i - j) * j和dp[i - j] * j 取最大的。

遞推公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));

3.dp的初始化

不少同學應該疑惑,dp[0] dp[1]應該初始化多少呢?

有的題解里會給出dp[0] = 1,dp[1] = 1的初始化,但解釋比較牽強,主要還是因為這么初始化可以把題目過了。

嚴格從dp[i]的定義來說,dp[0] dp[1] 就不應該初始化,也就是沒有意義的數值。

拆分0和拆分1的最大乘積是多少?

這是無解的。

這里我只初始化dp[2] = 1,從dp[i]的定義來說,拆分數字2,得到的最大乘積是1,這個沒有任何異議!

確定遍歷順序

確定遍歷順序,先來看看遞歸公式:dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j));

dp[i] 是依靠 dp[i - j]的狀態,所以遍歷i一定是從前向后遍歷,先有dp[i - j]再有dp[i]。

枚舉j的時候,是從1開始的。i是從3開始,這樣dp[i - j]就是dp[2]正好可以通過我們初始化的數值求出來。

所以遍歷順序為:

  1. for (int i = 3; i <= n ; i++) { 
  2.     for (int j = 1; j < i - 1; j++) { 
  3.         dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j)); 
  4.     } 

舉例推導dp數組

舉例當n為10 的時候,dp數組里的數值,如下:

343.整數拆分

以上動規五部曲分析完畢,C++代碼如下:

  1. class Solution { 
  2. public
  3.     int integerBreak(int n) { 
  4.         vector<int> dp(n + 1); 
  5.         dp[2] = 1; 
  6.         for (int i = 3; i <= n ; i++) { 
  7.             for (int j = 1; j < i - 1; j++) { 
  8.                 dp[i] = max(dp[i], max((i - j) * j, dp[i - j] * j)); 
  9.             } 
  10.         } 
  11.         return dp[n]; 
  12.     } 
  13. }; 
  • 時間復雜度:O(n^2)
  • 空間復雜度:O(n)

貪心

本題也可以用貪心,每次拆成n個3,如果剩下是4,則保留4,然后相乘,但是這個結論需要數學證明其合理性!

我沒有證明,而是直接用了結論。感興趣的同學可以自己再去研究研究數學證明哈。

給出我的C++代碼如下:

  1. class Solution { 
  2. public
  3.     int integerBreak(int n) { 
  4.         if (n == 2) return 1; 
  5.         if (n == 3) return 2; 
  6.         if (n == 4) return 4; 
  7.         int result = 1; 
  8.         while (n > 4) { 
  9.             result *= 3; 
  10.             n -= 3; 
  11.         } 
  12.         result *= n; 
  13.         return result; 
  14.     } 
  15. }; 
  • 時間復雜度O(n)
  • 空間復雜度O(1)

總結

本題掌握其動規的方法,就可以了,貪心的解法確實簡單,但需要有數學證明,如果能自圓其說也是可以的。

其實這道題目的遞推公式并不好想,而且初始化的地方也很有講究,我在寫本題的時候一開始寫的代碼是這樣的:

  1. class Solution { 
  2. public
  3.     int integerBreak(int n) { 
  4.         if (n <= 3) return 1 * (n - 1); 
  5.         vector<int> dp(n + 1, 0); 
  6.         dp[1] = 1; 
  7.         dp[2] = 2; 
  8.         dp[3] = 3; 
  9.         for (int i = 4; i <= n ; i++) { 
  10.             for (int j = 1; j < i - 1; j++) { 
  11.                 dp[i] = max(dp[i], dp[i - j] * dp[j]); 
  12.             } 
  13.         } 
  14.         return dp[n]; 
  15.     } 
  16. }; 

這個代碼也是可以過的!

在解釋遞推公式的時候,也可以解釋通,dp[i] 就等于 拆解i - j的最大乘積 * 拆解j的最大乘積。看起來沒毛病!

但是在解釋初始化的時候,就發現自相矛盾了,dp[1]為什么一定是1呢?根據dp[i]的定義,dp[2]也不應該是2啊。

但如果遞歸公式是 dp[i] = max(dp[i], dp[i - j] * dp[j]);,就一定要這么初始化。遞推公式沒毛病,但初始化解釋不通!

雖然代碼在初始位置有一個判斷if (n <= 3) return 1 * (n - 1);,保證n<=3 結果是正確的,但代碼后面又要給dp[1]賦值1 和 dp[2] 賦值 2,這其實就是自相矛盾的代碼,違背了dp[i]的定義!

我舉這個例子,其實就說做題的嚴謹性,上面這個代碼也可以AC,大體上一看好像也沒有毛病,遞推公式也說得過去,但是僅僅是恰巧過了而已。

本文轉載自微信公眾號「代碼隨想錄」,可以通過以下二維碼關注。轉載本文請聯系代碼隨想錄公眾號。

 

責任編輯:武曉燕 來源: 代碼隨想錄
相關推薦

2024-11-26 08:09:58

2020-07-07 08:02:33

動態規劃緩存枚舉

2021-01-04 08:37:53

動態規劃DP

2022-01-10 11:28:55

數據結構算法DP入門

2018-07-26 14:50:00

數據庫MySQL大表優化

2021-02-09 09:55:24

動態規劃

2021-01-19 05:46:45

背包數組容量

2021-01-26 05:39:06

項目模塊代碼

2018-04-04 08:47:16

數據中心基礎設施

2021-10-15 09:53:12

工具

2022-09-06 17:58:11

技術雙11

2013-03-31 14:24:21

敏捷開發Scrum迭代開發

2009-11-17 09:41:49

程序員的學歷

2023-01-06 08:42:41

動態規劃字符

2018-05-23 00:20:29

2019-06-17 09:49:27

裁員失業品牌

2015-07-28 14:22:09

BAT

2020-11-24 08:08:36

UDP 網絡OSI

2013-09-22 09:55:23

碼農程序員

2021-10-28 18:58:57

動態規劃數據結構算法
點贊
收藏

51CTO技術棧公眾號

国产精品99一区二区| 婷婷久久免费视频| 91免费视频大全| 国产精品99导航| 久久精品一区二区三区四区五区| 高清国产一区二区三区四区五区| 亚洲午夜免费电影| 欧美久久久久久一卡四| 一区精品在线观看| 欧美亚洲不卡| 中文字幕亚洲精品| 影音先锋黄色资源| 成人自拍视频网| 亚洲尤物视频在线| 日韩精品欧美在线| 亚洲老妇色熟女老太| 日韩国产精品久久久久久亚洲| 日韩在线观看免费高清| 国产伦精品一区二区三区精品| 色豆豆成人网| 亚洲高清视频中文字幕| 亚洲国产精品一区在线观看不卡 | 一本色道**综合亚洲精品蜜桃冫| 亚洲欧洲日韩精品| 香蕉视频黄在线观看| 国产一区二区久久| 国产精品r级在线| 久久精品人妻一区二区三区| 91综合网人人| 精品无码久久久久久国产| 欧美精品色视频| 男人亚洲天堂| 欧美中文字幕一区| heyzo亚洲| 欧美性受ⅹ╳╳╳黑人a性爽| 欧美韩国日本一区| 另类小说综合网| 少妇av一区二区| 福利电影一区二区三区| 成人精品视频在线| 亚洲天堂2021av| 久久久久综合| 欧美孕妇性xx| 亚洲免费黄色网址| 夜夜嗨av一区二区三区网站四季av| 久久精品国产精品| 人与动物性xxxx| japanese国产精品| 亚洲性无码av在线| 国产免费看av| 国产一区网站| 国产亚洲精品久久久久久| 亚洲av片不卡无码久久| 日韩手机在线| 精品亚洲一区二区| free性中国hd国语露脸| 日韩欧美中文字幕电影| 精品小视频在线| 欧美bbbbb性bbbbb视频| 宅男在线一区| 在线观看欧美日韩| 久久精品亚洲a| 影视亚洲一区二区三区| 欧美成人在线免费| 免费一级肉体全黄毛片| 尤物网精品视频| 97超视频免费观看| 男人天堂2024| 青青草国产成人av片免费| 国产精品视频在线播放| 国产精品久久久久久久成人午夜| 裸体一区二区三区| 97中文在线| 熟妇人妻一区二区三区四区| xnxx国产精品| 亚洲va久久久噜噜噜久久狠狠| 无遮挡的视频在线观看 | 精品少妇爆乳无码av无码专区| 欧美~级网站不卡| 久久免费国产精品1| 91看片在线播放| 老司机精品福利视频| 国产欧美亚洲精品| www.蜜桃av.com| 91丝袜国产在线播放| 偷拍视频一区二区| 五月婷婷视频在线观看| 福利微拍一区二区| 国产精品久久久久久av下载红粉 | a毛片在线播放| 五月婷婷综合网| 无人在线观看的免费高清视频| 亚洲一区有码| 亚洲国产小视频在线观看| 欧美图片第一页| 中文一区一区三区免费在线观看| 91精品国产777在线观看| 中文字幕精品视频在线观看| 国产资源精品在线观看| 久久久久久久久久久久久9999| 99免在线观看免费视频高清| 亚洲精品视频一区二区| 青青在线视频观看| 亚洲乱码一区| 少妇av一区二区三区| 亚洲国产成人精品激情在线| 美腿丝袜亚洲综合| 精品久久久久久亚洲| 黄网站免费在线观看| 欧美色播在线播放| 欧美中日韩在线| 亚洲成av在线| 日韩精品极品视频| 中文字幕在线观看成人| 免费看黄色91| 久久精品aaaaaa毛片| 高清全集视频免费在线| 在线亚洲高清视频| 亚洲欧美高清在线| 综合av在线| 国产精品入口免费视频一| 偷拍精品一区二区三区| 亚洲美腿欧美偷拍| www.精品在线| 国产剧情在线观看一区| 午夜欧美大片免费观看| 不卡的日韩av| 中文字幕一区二区三区四区| 久久精品视频91| 欧美一级三级| 高清欧美一区二区三区| 国产激情久久久久久熟女老人av| 免费在线视频一区| 久久久久免费网| 9999热视频在线观看| 日韩三区在线观看| 午夜精品福利在线视频| 精品一区中文字幕| 亚洲午夜精品久久| 成人一级视频| 在线亚洲午夜片av大片| 免费又黄又爽又猛大片午夜| 久久夜色精品一区| 欧美三级一级片| 欧美亚洲大陆| 欧美一级视频一区二区| 午夜av免费观看| 欧美日韩在线一区| 日本黄色网址大全| 西西裸体人体做爰大胆久久久| 精品乱色一区二区中文字幕| 极品在线视频| 亚洲精选一区二区| 久久久久久久黄色片| 91女厕偷拍女厕偷拍高清| 日韩av一二三四区| 蜜桃精品噜噜噜成人av| 国产成人精品一区二区三区| 国产在线视频网址| 欧美艳星brazzers| 特级西西人体高清大胆| 激情文学综合丁香| 青青在线免费视频| www.成人网| 91精品国产乱码久久久久久蜜臀| 无套内谢的新婚少妇国语播放| 精品国产91久久久| 偷拍夫妻性生活| 麻豆精品精品国产自在97香蕉| 久久综合久久99| 菠萝蜜视频在线观看入口| 日韩在线视频一区二区三区| 欧美人成在线视频| 秋霞视频一区二区| 欧美日韩激情视频8区| 日本黄色网址大全| 久久综合综合久久综合| 日本男女交配视频| 国产精品美女在线观看直播| 2019中文字幕在线| 三区四区在线视频| 日韩精品一区二区三区在线| 色网站在线播放| 国产欧美视频在线观看| 伊人av在线播放| 午夜在线a亚洲v天堂网2018| 亚洲7777| 久久久亚洲欧洲日产| 国产精品精品久久久久久| 国产黄色小视频在线| 欧美精品一区二区三区蜜桃| 丰满少妇xoxoxo视频| 亚洲色图视频网站| 中文乱码人妻一区二区三区视频| 日韩经典一区二区| 国产精品视频二| 国产午夜一区| 亚洲综合色av| 成人天堂yy6080亚洲高清| 欧美日韩国产成人在线| 日本福利午夜视频在线| 欧美一级二级三级乱码| 无码人妻一区二区三区线| 亚洲久草在线视频| 亚洲区免费视频| 高清国产午夜精品久久久久久| 日韩中文字幕免费在线| 狠狠入ady亚洲精品| 992tv成人免费影院| 一级毛片视频在线观看| 亚洲精品国产精品国自产在线| 在线观看中文字幕av| 亚洲国产aⅴ天堂久久| 亚洲精品一区二区三区在线播放| av一二三不卡影片| 色诱av手机版| 免费精品视频在线| 亚洲国产精品久久久久婷蜜芽| 亚洲成人三区| 亚洲欧洲中文| 影视先锋久久| 久久久久久一区| 超碰在线一区| 亚洲曰本av电影| 成人在线黄色| 日本免费久久高清视频| 成人av影院在线观看| 免费av一区二区| 日本在线人成| 最近2019中文字幕一页二页| 狠狠狠综合7777久夜色撩人| 日韩国产激情在线| 姝姝窝人体www聚色窝| 精品国产乱码久久久久久久久 | 亚洲国产无码精品| 成人av在线资源| 人妻巨大乳一二三区| 久久99在线观看| 182午夜在线观看| 日本午夜一区二区| 丰满少妇在线观看| 丝袜美腿亚洲综合| 日日摸天天爽天天爽视频| 99亚洲精品| 啊啊啊一区二区| 国产精品呻吟| 久久国产亚洲精品无码| 亚洲永久视频| 成人av一级片| 老司机精品导航| 91福利国产成人精品播放| 日韩在线一二三区| 超碰在线播放91| 激情六月婷婷久久| 欧美性受xxxx黒人xyx性爽| 国产一区二区三区综合| 久久发布国产伦子伦精品| 国产宾馆实践打屁股91| 婷婷五月精品中文字幕| 99精品视频一区| 欧美 日韩 国产 成人 在线观看| 中文字幕欧美区| 国产精品国产三级国产传播| 一区二区激情视频| 午夜精品福利视频| 日韩理伦片在线| 麻豆国产精品va在线观看不卡| 午夜小视频在线观看| 久久久久久久久久久国产| 精品国产第一福利网站| 国产精品免费一区| 国产在线不卡一区二区三区| 成人动漫视频在线观看完整版| 日本三级久久| 亚洲高清在线观看一区| 欧美在线亚洲| 草草久久久无码国产专区| 奇米777欧美一区二区| 五月天开心婷婷| www.久久久久久久久| 久久亚洲无码视频| 亚洲女同一区二区| 欧美三级一区二区三区| 欧美偷拍一区二区| 亚洲第一精品网站| 亚洲天堂色网站| а√天堂资源地址在线下载| 91成人天堂久久成人| 日韩一区二区三区四区五区| 国产成人亚洲欧美| 欧洲激情综合| 欧美中日韩在线| 日韩成人免费在线| 欧美丰满熟妇bbb久久久| 久久午夜电影网| 精品欧美一区二区久久久久| 色一区在线观看| 99国产在线播放| 亚洲欧美日韩精品久久| 二区在线播放| 国产极品jizzhd欧美| 成人性生交大片免费看96| 视频在线精品一区| 99热这里只有成人精品国产| 久久国产激情视频| 97久久超碰国产精品| 成年人二级毛片| 在线视频国内一区二区| 欧美 日韩 国产 在线| 日韩在线激情视频| 成人免费看黄| 国产日韩三区| 综合久久99| 日本高清久久久| 久久婷婷综合激情| 99免费在线观看| 欧美一区二区网站| 91精品国产综合久久久久久豆腐| 91国产视频在线播放| 日韩一区二区三区精品| 欧美日韩在线免费观看视频| 视频一区视频二区中文| 亚洲av成人片色在线观看高潮| 亚洲乱码精品一二三四区日韩在线| 国产女主播喷水视频在线观看| 亚洲成avwww人| 91在线中文| 国产中文欧美精品| 欧美hentaied在线观看| 欧美精品成人网| 久久久精品蜜桃| 中文字幕一区在线播放| 亚洲欧美成人网| 欧美一级鲁丝片| 极品尤物一区二区三区| 在线欧美一区| 一区二区免费在线观看视频| 亚洲一区二区三区四区在线| 成人黄色免费视频| 欧美成人免费在线视频| 国产精品毛片无码| 中国女人做爰视频| 国产精品99精品久久免费| 印度午夜性春猛xxx交| 这里只有精品99re| dy888亚洲精品一区二区三区| 成人免费福利在线| 亚洲精品一二三区区别| 中文字幕第66页| 伊人色综合久久天天人手人婷| 99国产精品久久久久久久成人 | 精品欧美乱码久久久久久1区2区| 超碰在线无需免费| 国产98在线|日韩| 亚洲日本欧美| 成年人免费观看视频网站| 在线欧美日韩精品| 伊人免费在线| 91免费精品国偷自产在线| 午夜久久影院| 国产亚洲精品成人a| 无码av免费一区二区三区试看| 婷婷伊人综合中文字幕| 国产97在线播放| 日韩88av| 黑人性生活视频| 亚洲成人av资源| 极品美乳网红视频免费在线观看| 国产成人在线一区二区| 99视频精品全部免费在线视频| 日日夜夜精品视频免费观看| 亚洲一区二区三区视频在线| 五月婷婷六月激情| 国产精品亚洲аv天堂网| 91成人观看| 特级西西人体wwwww| 欧美亚洲国产一区在线观看网站| 成人黄视频在线观看| 激情欧美一区二区三区中文字幕| 日韩av网站免费在线| 男人操女人的视频网站| 日韩国产精品视频| 亚洲精品tv| 缅甸午夜性猛交xxxx| 欧美国产国产综合| 好男人在线视频www| 国产成人免费av电影| 影音先锋日韩在线| 欧美bbbbb性bbbbb视频| 欧美一级搡bbbb搡bbbb| 黑人巨大亚洲一区二区久 | av在线网址观看| 玛丽玛丽电影原版免费观看1977 | 污污污www精品国产网站| 在线免费精品视频| 国产丝袜视频在线播放| 亚洲精品一区二区三| 99这里只有精品| 国产普通话bbwbbwbbw| 国产极品精品在线观看|