精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲第一av网| 亚洲va国产天堂va久久en| 国产欧美日韩91| 久草福利资源在线观看| 丝袜连裤袜欧美激情日韩| 色婷婷av久久久久久久| 日日噜噜噜夜夜爽爽| 亚洲国产精品久久久久久6q| 免费视频一区| 久久影视免费观看| 精品无码在线视频| 婷婷久久免费视频| 黑人狂躁日本妞一区二区三区| 四虎一区二区| 手机看片1024国产| 精品写真视频在线观看| 青草热久免费精品视频 | av在线免费在线观看| 亚洲免费激情| 欧美麻豆久久久久久中文 | 刘亦菲毛片一区二区三区| 久久精品在线| 久久久久中文字幕2018| 中文国语毛片高清视频| 蜜桃a∨噜噜一区二区三区| 91精品国产入口| 午夜免费一区二区| 国产激情视频在线看| 亚洲精品亚洲人成人网在线播放| 欧洲久久久久久| 色一情一乱一乱一区91av| 久久精品免费看| 国产成人精品久久二区二区91| 欧美精品久久久久性色| 欧美电影免费| 亚洲午夜性刺激影院| 五月开心播播网| 综合激情网...| 日韩欧美中文一区| 波多野结衣免费观看| 69堂免费精品视频在线播放| 五月天一区二区三区| 人妻激情另类乱人伦人妻| 成人短视频在线| 国产精品久久久久四虎| 视频一区视频二区视频三区视频四区国产 | 精品一区在线视频| 久久免费精品视频在这里| 亚洲免费视频观看| 一本色道综合久久欧美日韩精品 | 444亚洲人体| 91丨九色丨丰满| 久久精品99久久久| 成人在线一区二区| 国产模特av私拍大尺度| 韩国午夜理伦三级不卡影院| 国产成人久久精品| 国产精品无码粉嫩小泬| 日韩黄色一级片| 国产欧美一区二区三区在线| 在线观看中文字幕码| 麻豆精品一区二区三区| 国产精品视频精品视频| 91tv国产成人福利| 国产精品99精品久久免费| 91免费看片网站| 精品人妻一区二区三区四区不卡| 国产一区二区在线电影| 成人欧美一区二区三区视频| 亚洲国产精品久久久久久久| eeuss国产一区二区三区| 精品国产免费一区二区三区| 欧美孕妇孕交| 亚洲国产高清在线| 精品一区二区三区毛片| 国产精品探花在线| 欧美日韩亚洲一区二区| 91热这里只有精品| 国产午夜精品一区在线观看| 日韩欧美第一区| 六十路息与子猛烈交尾| 九一精品国产| 精品国内亚洲在观看18黄| 久久黄色免费网站| 国产精品日本欧美一区二区三区| 日本午夜人人精品| 国产美女免费看| jiyouzz国产精品久久| 日本一区二区久久精品| 麻豆视频免费在线观看| 亚洲国产精品一区二区久久恐怖片| 91九色在线观看视频| 日韩pacopacomama| 欧美一区二区三区视频| 国产福利短视频| 欧美激情理论| 欧美亚洲成人网| 999久久久久久| 久久久久国产精品人| a级网站在线观看| 在线天堂新版最新版在线8| 欧美精品一级二级三级| 搡老熟女老女人一区二区| 久久麻豆精品| 国产成人91久久精品| www.xxxx国产| 中文字幕高清不卡| 福利视频一二区| 国产亚洲亚洲国产一二区| 亚洲欧洲一区二区三区在线观看| 青春草免费视频| 麻豆成人久久精品二区三区红| 国产另类自拍| av免费在线网站| 欧美日韩在线免费视频| 久久亚洲AV成人无码国产野外 | aaa一区二区三区| 久久精品夜色噜噜亚洲a∨ | 久久一区精品| 国产精品一区二区欧美黑人喷潮水| 午夜视频成人| 日本高清免费不卡视频| 中文字幕在线播放视频| 国产一区观看| 亚洲永久在线观看| 亚洲xxxxxx| 色偷偷久久人人79超碰人人澡| 成人免费看片载| 在线成人激情| 91视频-88av| 日本三级视频在线播放| 欧洲国内综合视频| 摸摸摸bbb毛毛毛片| 亚洲一区二区三区高清| 国产免费一区二区| 国产亚av手机在线观看| 欧美一级日韩免费不卡| 91麻豆精品成人一区二区| 免费成人你懂的| 丝袜美腿玉足3d专区一区| 亚洲精品粉嫩美女一区| 国产一区二区三区18| 麻豆成人免费视频| 久久久久久影视| 蜜臀av午夜一区二区三区| 视频小说一区二区| 2019中文字幕免费视频| 日韩av成人| 色av一区二区| 精品亚洲aⅴ无码一区二区三区| 欧美亚洲三区| 欧美系列一区| 成人日韩在线观看| 中文字幕av一区二区| 中文字幕久久熟女蜜桃| 国产精品剧情在线亚洲| 成人综合久久网| 你懂的国产精品| 国产有色视频色综合| 欧美少妇精品| 国产亚洲精品高潮| 中文字幕永久在线视频| 亚洲欧美日韩综合aⅴ视频| 亚洲AV无码久久精品国产一区| 欧美激情1区2区| 国产美女精品在线观看| 老司机2019福利精品视频导航| 亚洲美女自拍视频| 91精品国产乱码久久久久| 亚洲精品日韩专区silk| 精品久久久久一区二区| 久久久一二三| 亚洲一区高清| 豆花视频一区二区| 日本中文字幕不卡免费| www视频在线观看免费| 欧美一区二区久久久| 久久久午夜影院| 国产精品久久久久久亚洲毛片| 亚洲第一区第二区第三区| 激情综合激情| 日本在线高清视频一区| 日本超碰一区二区| 奇米4444一区二区三区| 日本在线观看免费| 亚洲精品在线观看网站| 日韩黄色一级视频| 亚洲精品乱码久久久久| 强伦人妻一区二区三区| 国内精品久久久久影院一蜜桃| 精品无码一区二区三区爱欲| 成人羞羞视频在线看网址| 国产精品区免费视频| 亚洲精品**中文毛片| 成人va在线观看| 欧美日产一区二区三区在线观看| a成人v在线| 欧美激情一级二级| 触手亚洲一区二区三区| 日韩美女视频在线| 中文字幕一区二区三区四区欧美| 亚洲欧美aⅴ...| 国产熟妇久久777777| 国产大片一区二区| 波多野结衣天堂| 一区免费视频| 在线无限看免费粉色视频| 亚洲自拍电影| 国产九区一区在线| 美国十次综合久久| 国产精品久久久久久久久久小说| 欧美xxx黑人xxx水蜜桃| 色悠悠久久88| 久久国产精品高清一区二区三区| 日韩三级免费观看| 在线观看日批视频| 91搞黄在线观看| 日本三级小视频| 亚洲一区二区五区| 黄色录像免费观看| 国产欧美日韩精品一区| www.超碰97| 成人avav在线| 在线播放av网址| 国产久卡久卡久卡久卡视频精品| 网站一区二区三区| 性色av一区二区怡红| 中文字幕无码精品亚洲资源网久久| 久久精品免费一区二区三区| 日韩欧美三级电影| 亚洲欧美校园春色| 久久国产欧美精品| 日韩av不卡一区| 国产区一区二区三区| 久久久精品区| 91色精品视频在线| 亚洲成a人片777777久久| 国产精品午夜一区二区欲梦| 二区三区不卡| 国产成人福利网站| 欧美日韩大片| 国产国产精品人在线视| 国产超碰精品| 国产成人免费91av在线| 欧洲精品一区二区三区| 国产精品96久久久久久| 123成人网| 国产原创欧美精品| 亚洲资源在线| 91黄在线观看| 亚洲专区**| 激情五月综合色婷婷一区二区| 国产精品zjzjzj在线观看| 国产亚洲精品自在久久| 国产一区调教| 蜜桃视频日韩| japanese国产精品| 亚洲视频导航| 亚洲国产精品日韩专区av有中文 | 国产z一区二区三区| 在线天堂资源| 国产伦精品一区二区三区精品视频| 日韩专区视频| 3d动漫啪啪精品一区二区免费| 中文字幕一区日韩精品| 久久99精品久久久久久久久久 | 成人国产精品免费观看| 久久人人妻人人人人妻性色av| 久久久久99精品国产片| 国产调教在线观看| 亚洲免费av观看| 日本系列第一页| 91久久人澡人人添人人爽欧美| 亚洲视频一区二区三区四区| 日韩视频一区在线观看| 天堂av一区二区三区| 国产亚洲欧美日韩美女| 国产精品久久麻豆| 51精品在线观看| 亚洲在线资源| 久久国产精品-国产精品| 久久理论电影| 亚洲 高清 成人 动漫| 免费欧美在线视频| 一级黄色片毛片| 国产欧美一区二区三区在线看蜜臀| 最新一区二区三区| 欧美日韩免费看| 一级黄色片在线观看| 亚洲国产成人久久综合一区| 搞黄视频免费在线观看| 欧美激情网友自拍| h1515四虎成人| 精品国产乱码久久久久久郑州公司| 日韩理论在线| 国产97在线 | 亚洲| 蜜臀av性久久久久蜜臀aⅴ| 人妻互换一二三区激情视频| 国产精品天美传媒沈樵| 国产午夜福利精品| 欧美三级一区二区| 无套内谢的新婚少妇国语播放| 色系列之999| 欧美亚洲韩国| 国产视频精品网| 天天做天天爱综合| 能看的毛片网站| 不卡视频在线看| 国产中文av在线| 色婷婷久久99综合精品jk白丝| 亚洲美女综合网| 久久久精品视频成人| 免费观看一级欧美片| 91视频网页| 天堂美国久久| 色综合天天色综合| 久久精品人人爽人人爽| 久久精品视频8| 欧美一卡2卡3卡4卡| a√资源在线| 国产精品白嫩初高中害羞小美女| 久久国产精品免费精品3p| 国产女主播av| 国产一区二区三区在线观看免费视频| 人妻少妇无码精品视频区| 欧美日韩国产一区中文午夜| av中文字幕免费在线观看| 日韩一区二区久久久| 丁香婷婷久久| 日韩亚洲视频| 日韩专区一卡二卡| 国产成人无码精品久久二区三| 午夜国产精品影院在线观看| 亚洲乱码在线观看| 欧美激情视频一区二区三区不卡| 999色成人| 日本一二三区视频在线| 国产综合一区二区| 中文字幕av播放| 日韩一区二区免费在线电影 | 亚洲乱码国产乱码精品精可以看| 亚洲天堂狠狠干| 日韩亚洲第一页| 深夜日韩欧美| 日本福利视频导航| 国产精品乡下勾搭老头1| 久久久久亚洲av无码专区体验| 欧美一区二区在线不卡| 中文av资源在线| 国产精品一区二| 国产欧美在线| 国产精品无码一区二区三区| 欧亚洲嫩模精品一区三区| a天堂中文在线| 91精品中国老女人| 欧美精选在线| 精品视频站长推荐| 欧美性极品xxxx做受| 国产理论电影在线观看| 国产精品一二三视频| 欧美在线91| 久久福利小视频| 91国产丝袜在线播放| 欧美jizzhd欧美| 国产精品一国产精品最新章节| 中文久久精品| 亚洲 小说 欧美 激情 另类| 欧美日本在线一区| 男女视频在线| 欧美不卡三区| 麻豆成人av在线| 久草免费在线视频观看| 日韩大片在线观看视频| 日韩不卡免费高清视频| 日本精品免费视频| 99精品国产99久久久久久白柏| 国产免费一级视频| 久久精品色欧美aⅴ一区二区| 综合激情五月婷婷| 男人透女人免费视频| 亚洲免费观看高清| 精品成人一区二区三区免费视频| 国产日韩欧美视频| 99国产精品久久久久久久成人热| 久久中文字幕精品| 精品少妇一区二区三区免费观看 | 成年人二级毛片| 亚洲国产成人精品久久| 国产伊人久久| 日本a在线免费观看| 日本一区二区三区在线观看| 国产丝袜视频在线观看| 国产91免费看片| 国模大胆一区二区三区| 国产1区2区在线观看| 欧美va在线播放| 久久久免费人体| 欧美精品一区免费| 一区二区三区精品| av中文字幕一区二区三区|