劃分數 動態規劃

2021-09-10 13:55:03 字數 717 閱讀 7096

題目:有n個無區別的物品,將它們劃分成不超過m組,求出劃分方法數模m的餘數。

限制條件

.1<=m<=n<=1000

2<=m<=10000

輸入:n=4

m=3m=10000

輸出:4

dp[i][j]=j的i劃分的總數

遞推關係:

遞推關係的難點在於不重複。我們採用一種標準將問題化為子問題,這個標準需要用到一種新的定義。我們定義n的m劃分具體為乙個集合,滿足∑mi=1ai = n 。可以看出裡一共有m個數,這m個數不一定大於0。

分類討論:

1、不存在某個ai=0(不能用0補)

dp[i][j]=dp[i][j-i]

2、存在某個ai=0(可以用0補)

dp[i][j]=dp[i-1][j]

得遞推關係

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

#include

const int maxn = 1000+10;

int n, m, m;

int dp[maxn][maxn];

void solve()

else}}

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

}int main()

return 0;

}

演算法 劃分數 動態規劃

題目 劃分數有n個無區別的物品,將他們劃分成不超過m組,求出劃分方法數模m的餘數。限制條件 1 m n 1000 2 m 10000 輸入 輸入 n,m,m分別代表n個物品 m個組 對m取模。輸出 輸出劃分方法數對m取模的餘數。樣例輸入 4 3 1000 樣例輸出 4所有可能的情況都可以看作是把n劃...

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

給你乙個正整數n,讓你計算出n的m劃分有幾種方法。思路 定義dp i j 為i的j劃分,即將i劃分為j個數字之和的方案數。1 當j i時,此時,劃分個數不超過i,此時是正常的劃分。劃分的結果一定只有兩種型別 一種是j個數字,都大於0。另一種是有0,即不夠劃分j個,用0來湊的。j個數字中存在0的,其實...

動態劃分陣列

問題描述 給定乙個正整數的集合a 是否可以將其分割成兩個子集合,使兩個子集合的數加起來的和相等。例a 可以分割 及 input 第一行集合元素個數n n 300 第二行n個整數 output 如果能劃分成兩個集合,輸出任意乙個子集,否則輸出 no sample input 51 3 8 4 10 s...