演算法筆記 遞迴 整數劃分問題

2021-07-09 11:28:21 字數 649 閱讀 4551

整數劃分問題

將正整數n表示成一系列正整數之和,n=n1+n

2+n3+......n

k(其中,n

1>=n

2>=......n

k>=1,k>=1),正整數n的這種表示稱為正整數n的劃分。正整數n的不同劃分個數稱為正整數n的劃分數,記作p(n)。例如:正整數6有11總不同的劃分 6;

5+1;

4+2,4+1+1;

3+3,3+2+1,3+1+1+1;

2+2+2,2+2+1+1,2+1+1+1+1;

1+1+1+1+1+1;

記q(n,m)為正整數n的所有不同劃分中,最大加數n

1不大於m的劃分個數。可以建立如下遞推關係:

前面三個遞推式比較好理解,關鍵是第四個遞推式。當n>m>1時,n的劃分由兩部分組成。以整數q(6,3)為例,q(n,m-1)內容是第5排和第6排內容,不大於2的6的劃分;q(n-m,m)內容是第4排,不大於3的(6-3=3)的劃分。

程式**:

遞迴 整數劃分問題

將正整數n表示成一系列整數之和,n n1 n2 nk 其中,n1 n2 nk 1,k 1 正整數n的這種表示稱為正整數n的劃分。正整數n的不同劃分個數稱為正整數n的劃分數,記為p n 例如,正整數6有11種不同的劃分,所以p 6 11。6 5 1 4 2 4 1 1 3 3 3 2 1 3 1 1 ...

遞迴 整數劃分問題

問題描述 將正整數n表示成一系列正整數之和 n n1 n2 nk,其中n1 n2 nk 1,k 1。正整數n的這種表示稱為正整數n的劃分。問題1 輸出整數n的所有可能的劃分,如 輸入 6 輸出 5 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 2 2,2 2 1 1,2 1 1 1...

遞迴 整數劃分問題

問題描述 將正整數n表示成一系列正整數之和 n n1 n2 nk,其中n1 n2 nk 1,k 1。正整數n的這種表示稱為正整數n的劃分。問題1 輸出整數n的所有可能的劃分,如 輸入 6 輸出 5 1 4 2,4 1 1 3 3,3 2 1,3 1 1 1 2 2 2,2 2 1 1,2 1 1 1...