整數劃分 劃分數(DP動態規劃)

2021-08-17 17:35:47 字數 683 閱讀 2949

給你乙個正整數n,讓你計算出n的m劃分有幾種方法。

思路定義dp[i][j]為i的j劃分,即將i劃分為j個數字之和的方案數。

1:當j<=i時,此時,劃分個數不超過i,此時是正常的劃分。

劃分的結果一定只有兩種型別:一種是j個數字,都大於0。另一種是有0,即不夠劃分j個,用0來湊的。

j個數字中存在0的,其實就是前乙個劃分j-1的方案數,補0就行,即dp[i][j-1]。

j個數字均大於0的,此時也能呼叫之前的解求出,已經當前j個數字均大於0,我們將每個數字都減去1,此時在保證j個數字結構不變,且非負的情況下,dp[i-j][j]就是當前dp[i][j]不為0的方案數。

2:當j>i,此時劃分個數超過i本身,此時j個數字必然存在0,且只有這一種情況,此時直接dp[i][j-1];

j<=i時:dp[i][j]=dp[i][j-1]+dp[i-j][j]

j > i時:dp[i][j]=dp[i][j-1]

**:

#includell dp[550][550],n,m;

int main()

}printf("%lld\n",dp[n][m]);

}return 0;

}

DP 動態規劃 整數劃分

時間限制 3000 ms 記憶體限制 65535 kb 難度 3 輸入第一行是測試資料的數目m 1 m 10 以下每行均包含乙個整數n 1 n 10 輸出輸出每組測試資料有多少種分法。描述將正整數n表示成一系列正整數之和 n n1 n2 nk,其中n1 n2 nk 1,k 1。正整數n的這種表示稱為...

劃分數 動態規劃

題目 有n個無區別的物品,將它們劃分成不超過m組,求出劃分方法數模m的餘數。限制條件 1 m n 1000 2 m 10000 輸入 n 4 m 3m 10000 輸出 4 dp i j j的i劃分的總數 遞推關係 遞推關係的難點在於不重複。我們採用一種標準將問題化為子問題,這個標準需要用到一種新的...

整數劃分問題 dp 動態規劃

原文 假設我們有乙個整數n,我們要對它在約束條件不同的情況下進行劃分。1.把n劃分成不小於m 且為正整數 的劃分數 2.把n劃分成為k個正整數的劃分數 3.把n劃分成k個奇數的劃分數 1.把n劃分成不小於m 且為正整數 的劃分數 狀態dp i j 代表把i劃分為不小於j的劃分數。1.把n劃分為不小於...