整數劃分問題 動態規劃

2021-07-01 21:48:51 字數 736 閱讀 2464

原文出處:

整數劃分 有以下情況:

1) 將n劃分成若干正整數之和的劃分數。

2) 將n劃分成k個正整數之和的劃分數。

3) 將n劃分成最大數不超過k的劃分數。

4) 將n劃分成若干奇正整數之和的劃分數。

5) 將n劃分成若干不同整數之和的劃分數。

#include#includeconst int ns=55;  

int n,k;

int dp[5][ns][ns];

void init()

//將n劃分成若干奇偶正整數之和的劃分數。

dp[2][0][0]=dp[1][0][0]=1;

for (int i=1;ifor (int j=1;j<=i;j++)

for (int i=1;ifor (int j=1;j//將n劃分成若干不同整數之和的劃分數。

for (int i=0;idp[4][0][i]=1;

for (int i=1;ifor (int j=1;jif (idp[4][i][j]=dp[4][i][i];

else

dp[4][i][j]=dp[4][i][j-1]+dp[4][i-j][j-1];

}

int main()

return 0;

}

整數劃分問題 動態規劃 遞迴

將乙個整數 n 劃分為 不超過m 組 的劃分數 如 n 4m 3 輸出 4 思路 使用動態規劃 定義狀態 dp i j j的i劃分的組數 遞推 dp i j dp i j i dp i 1 j 當m n時,變成了常見的整數劃分問題 cpp view plain copy include includ...

整數劃分系列問題(動態規劃)

今天上演算法分析與設計課時,提到整數劃分問題,但是因為之前沒有很好地理解這一系列的問題。當被老師問到你們做演算法的應該會這個問題吧,我當時也不太記得,但是只能硬頭皮試著去寫了下,用的是brute force,老師果斷說我的方法跑不出正確的解,但是課堂上我也沒有去解釋了。課後自己驗證了一下,沒有問題,...

動態規劃 整數劃分問題(2)

整數劃分 乙個老生長談的問題 1 練練組合數學能力.2 練練遞迴思想 3 練練dp 總之是一道經典的不能再經典的題目 這道好題求 1.將n劃分成若干正整數之和的劃分數。2.將n劃分成k個正整數之和的劃分數。3.將n劃分成最大數不超過k的劃分數。4.將n劃分成若干奇正整數之和的劃分數。5.將n劃分成若...