問題描述:把乙個整數n劃分成1到n的劃分,例如3可以劃分為1+1+1,1+2,3這三種劃分,那麼求n的劃分數。
解題思路:
可以把1,設為x的0次方:x^0
把1,設為x的1次方:x^1
.......把n,設為是x的n次方:x^n
那麼1可能出現,0,1,2,3,4,5,6...n次,而2可能出現0,1,2,3,.......n/2次,3可能出現0,1,2,3,4........n/3次等等。
依照上面的把1可以表示成x^1:那麼可能出現的次數就是1+x^1+2*x^1+3*x^1+...n*x^1,同理有1+1*x^2+2*x^2+.....(n/2)*x^2那麼把這些多項式相乘起來,得
(1+1*x^1+2*x^1....n*x^1)(1+x^2+2*x^2....(n/2)*x^2).....(x^n)是不是x^n最終的係數就是n的整數劃分數,下面是我的**:
public class main {
public static int getnum(int n){
//存放最終的結果
int c1=new int[n+1];
//存放當前兩個多項式相乘的結果
int c2=new int[n+1];
//初始化讓c1開始的係數全為1
arrays.fill(c1, 1);
//初始化讓c2開始的係數全為0
arrays.fill(c2, 0);
for(int i=2;i<=n;i++){
//i代表當前的x到底是多少次方
for(int j=0;j
整數劃分問題(遞迴法 或 母函式法 )
樣題 sdut2015寒假結訓賽 開始我還以為是用揹包來做,但是寫完了 怎麼寫就是不對,並且在實現的時候確實有點地方我用揹包的演算法描述不了!後來查到可以用 遞迴 或者 母函式演算法!比賽時曾考慮過用遞迴來實現,但沒有推導出來,後來發現別人的部落格裡面寫著 整數劃分問題 應該在講解遞迴的時候就該學會...
分治法 整數劃分問題
問題 將給定正整數n表示成一系列正整數之和n n1 n2 nk,其中n1 n2 nk 1,k 1。求正整數n的不同劃分個數p n 有些問題本身都具有比較明顯的遞迴關係,因而容易用遞迴函式直接求解。而有些問題遞迴關係卻不明顯。在本例中,如果設p n 為正整數n的劃分數,則難以找到遞迴關係,因此考慮增加...
整數劃分 分治法
整數劃分經典演算法了,不做解釋,自己做了一下,鍛鍊遞迴能力!1 include 2 3int bufferarray 1000 快取陣列 4int bufferlenth 0 快取陣列的當前長度 5int outputsignal 1 當前輸出的控制訊號 6int total 0 劃分的總數 78 ...