整數拆分問題

2021-06-06 20:07:46 字數 585 閱讀 9849

問題:

對於1個正整數n,將其拆分成幾個正整數的和,如何拆分可使得其乘積最大?

csdn使用者pathuang68給出的結論是:如果不在乎是否為整數的話,那麼把每份平均分為e(2.71828459045...)時,所得到的乘積是最大的,

如果要是整數的話,那麼就選盡可能地靠近e的整數即可,比如3。具體證明請參見

我的拆法方法:

若n<=4,無需拆分,它本省就是最大的。

若n>4, 將n表示成 3k+r(k>0, 0< = r <3)的形式,r為餘數。

case 1: r=0,可將n拆成k個3.

case 2: r=1,將n拆成k-1個3,和1個4.

case 3: r=2,將n拆成k個3,和1個2.

**見下:

#include #include void print_int_split(int n)

for (i=0;i0)

printf("%d",r);

}}void main()

\n");

}}

說明:本題目來自csdn的乙個帖子,見 整數拆分問題

整數拆分問題(1)

題意 給你乙個n,求滿足1 x 1 y 1 n的x,y種類數 當你看到這題的時候,你會怎麼做呢?當時我看到第一反應就是先化簡,因為1 x這個數肯定是比1小的小數,這個精度問題是個大問題,而且兩個小數相加也不會完全等於那個小數。所以,想辦法劃成整數關係式。兩邊同乘xy,得 y x xy n 轉換,得 ...

整數拆分問題 遞迴法

整數劃分問題是演算法中的乙個經典命題之一,有關這個問題的講述在講解到遞迴時基本都涉及到。所謂整數劃分,是指把乙個正整數n寫成如下形式 n m1 m2 m3 mi 其中mi為正整數,並且1 mi n 則為n的乙個劃分。如果中的最大值不超過m,即max m,則稱它屬於n的乙個m劃分。這裡我們記n的m劃分...

回溯演算法 整數拆分問題

洛谷p2404.簡單的回溯法實現,輸入乙個數字n,求出1到n 1中相加和是n的算式。用乙個ans陣列儲存探索到的每乙個數字,在dfs函式中用減法的形式得到和什麼時候到達了n,到達n也就是temp變為0的時候。同時又根據例項,沒有重複的算式,乙個數字可以用多次,所以i的起始位置要設定乙個start來表...