動態規劃 數學分析 剪繩子問題1

2021-10-03 18:57:33 字數 832 閱讀 8236

當n=2, 1+1;

當n=3, 2+1 = 2 ×

\times

× 1;

當n=4, 2 ×

\times

× 2>3 ×

\times

× 1;

當n=5, 3 ×

\times

× 2>4 ×

\times

× 1;

當n=6, 3 ×

\times

× 3>4 ×

\times

× 2;

綜上演算法流程:

當 n \leq 3n≤3 時,按照貪心規則應直接保留原數字,但由於題目要求必須剪成 m>1m>1 段,因此必須剪出一段長度為 11 的繩子,即返回 n - 1n−1 。

當 n>3n>3 時,求 nn 除以 33 的 整數部分 aa 和 餘數部分 bb (即 n = 3a + bn=3a+b ),並分為以下三種情況:

當 b = 0b=0 時,直接返回 3^a3

**演示:

//3為最小不可分割數字

public

intcuttingrope

(int n)

}

思路:長度從1開始,dp陣列的每乙個裡面存放著最長的乘積數字。即 dp[i] 裡面存放著長度為i的繩子切割之後乘積最大的數字。

public

intcuttingrope

(int n)

dp[i]

= max;

}return dp[n]

;}

動態規劃之二 剪繩子問題

問題 現有一根長度為n的繩子,需要你剪成m段,使m段的乘積最大。其中m n都為整數,剪成的每段長度也為整數,n已知,m未知 當我們遇到乙個大規模問題時,總是習慣把問題的規模變小,這樣便於分析討論。我們從最簡單的情況進行分析 當繩子的長度n 1時,我們至少需要剪繩子一次,這時乘積為0 當繩子的長度為n...

JZ 14 I 剪繩子(數學 動態規劃)

參考1 參考2用乙個陣列 dp 記錄從 0 到 n 長度的繩子剪掉後的最大乘積,即 dp i dp i dp i 表示長度為 i 的繩子剪成 m 段後的最大乘積,初始化 dp 2 1 dp 2 1 dp 2 1,最終返回dp n dp n dp n 陣列大小需要設為n 1 n 1n 1 假設已經減掉...

機器學習(1) 機器學習與數學分析

近期因工作需要,開始學習機器學習。學習心得體會,定期更新梳理出來,首次接觸,可能有理解和解釋不到位的地方,望批評指正,也算是自我提公升。提到機器學習,樓主第一反應是各種複雜的公式,各種搞不定的矩陣計算 積分 微分 熵等,甚至還專門為此重新學習了線性代數。其實從機器學習的角度去看數學知識,基本的高等數...