LeetCode343. Integer Break

一壮吩、原題

Given a positive integer n, break it into the sum of at least two positive integers and maximize the product of those integers. Return the maximum product you can get.

For example, given n = 2, return 1 (2 = 1 + 1); given n = 10, return 36 (10 = 3 + 3 + 4).

Note: You may assume that n is not less than 2 and not larger than 58.


二苍蔬、題意

給定一個大于1的正整數(shù)咨察,求如何將這個數(shù)拆成幾個正整數(shù)的和(至少要拆成兩個)匹涮,使得這幾個正整數(shù)的乘積最大鸟辅。


三倍奢、思路

動態(tài)規(guī)劃思想:定義狀態(tài)熟嫩、求出狀態(tài)轉(zhuǎn)移方程
定義狀態(tài):從簡單情況開始考慮:

  • 整數(shù)2:2 = 1 + 1宅此,則最大乘積為1机错;
  • 整數(shù)3:3 = 2 + 1,則最大乘積為2父腕;
  • 整數(shù)4:4 = 3 + 1 = 2 + 2弱匪,則最大乘積為4。先考慮3 + 1璧亮,和為3的最大乘積為2(由上面推出的結(jié)果)萧诫,比3還小斥难,所以肯定選擇3,所以選擇3 + 1的最大乘積為3 × 1 = 3帘饶;考慮2 + 2哑诊,和為2的最大成績?yōu)?,比2還小及刻,所以選擇2 + 2的最大乘積為2 × 2 = 4搭儒,比較這兩種情況結(jié)果為4;
  • 整數(shù)5:5 = 4 + 1 = 3 + 2提茁,則最大乘積為6淹禾。同4一樣推斷。
  • 整數(shù)6:6 = 5 + 1 = 4 + 2 = 3 + 3茴扁,最大乘積為9铃岔。考慮這三種情況峭火,選擇5 + 1的最大乘積為6毁习,選擇4 + 2的最大乘積為8,選擇3 + 3的最大乘積為9卖丸,比較這三種情況纺且,結(jié)果為9;
    ......

綜上稍浆,對于一個正整數(shù)n载碌,則n的組合情況有 n = (n - 1) + 1 = (n - 2) + 2 = ... ,對于其中一種情況(n - i)與i衅枫,可以如果(n - i)大于和為(n - i)的最大乘積(例如3嫁艇,和為3的最大乘積為2,而3本身大于2弦撩,則選擇3步咪,不選擇其最大乘積),則選擇(n - i)本身益楼,不選擇和為(n - i)的最大乘積猾漫;否則選擇和為(n - i)的最大乘積,所以**定義dp[i]表示和為i的最大乘積感凤,則dp[i] = max{ max{i - x, dp[i - x]} * max{x, dp[x]}悯周,其中i > x >= i/2 } **


四、代碼

class Solution {
public:
    int getMax(int a, int b){
        return a > b ? a : b;
    }
    
    int integerBreak(int n) {
        int *dp = new int[n + 1];
        dp[0] = 0;
        dp[1] = 1;

        int max;
        for (int i = 2; i <= n; ++i) {
            max = -1;
            for (int j = i - 1; j >= i / 2; --j) {
                max = getMax(max, (j > dp[j] ? j : dp[j]) * (i - j > dp[i - j] ? (i - j) : dp[i - j]));
            }
            dp[i] = max;
        }

        int res = dp[n];
        delete[] dp;
        return res;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俊扭,一起剝皮案震驚了整個濱河市队橙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌萨惑,老刑警劉巖捐康,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異庸蔼,居然都是意外死亡解总,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門姐仅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來花枫,“玉大人,你說我怎么就攤上這事掏膏±秃玻” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵馒疹,是天一觀的道長佳簸。 經(jīng)常有香客問我,道長颖变,這世上最難降的妖魔是什么生均? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮腥刹,結(jié)果婚禮上马胧,老公的妹妹穿的比我還像新娘。我一直安慰自己衔峰,他們只是感情好佩脊,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著垫卤,像睡著了一般邻吞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上葫男,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天抱冷,我揣著相機(jī)與錄音,去河邊找鬼梢褐。 笑死旺遮,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盈咳。 我是一名探鬼主播耿眉,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鱼响!你這毒婦竟也來了鸣剪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎筐骇,沒想到半個月后债鸡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡铛纬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年厌均,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片告唆。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡棺弊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出擒悬,到底是詐尸還是另有隱情模她,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布懂牧,位于F島的核電站侈净,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏归苍。R本人自食惡果不足惜用狱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拼弃。 院中可真熱鬧夏伊,春花似錦、人聲如沸吻氧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盯孙。三九已至鲁森,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間振惰,已是汗流浹背歌溉。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留骑晶,地道東北人痛垛。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像桶蛔,于是被迫代替她去往敵國和親匙头。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容