codevs1039 數的劃分 黃金 dp

2021-08-31 01:35:18 字數 943 閱讀 4800

題目描述 description

將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同(不考慮順序)。

例如:n=7,k=3,下面三種劃分方案被認為是相同的。

1 1 5

1 5 1

5 1 1

問有多少種不同的分法。

輸入描述 input description

輸入:n,k (6輸出描述 output description

輸出:乙個整數,即不同的分法。

樣例輸入 sample input

7 3樣例輸出 sample output

問題分析:與放蘋果的題類似

f[i][j]表示數i被分為j份,共有兩種情況,一種是不含1的,一種是含有1的。

不含1的可看作是每乙份都減去1,共減去j,情況不變,即f[i-j][j];

含有1的可看作是數i-1被分為j-1份,即第j份為1,也就是f[i-1][j-1];

即f[i][j]=f[i-j][j]+f[i-1][j-1]。

#include using namespace std;

acf[i][j]=f[i-1][j-1]+f[i-j][j]

分兩種情況:全都不是1+至少有乙個為1

int f[250][10];

int main()

for(int i=2;i<=n;i++)

}} cout《動態規劃想不到的話,還可以用深搜寫,因為本題資料量較小。具體分析見注釋。

#include using namespace std;

///ac

int dfs(int n,int k,int i)//n個數被分為k份,每份至少為i

else

} return sum;

} }int main()

CodeVS 1039 數的劃分

題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 問有多少種不同的分法。輸入描述 input description n,k 6 輸出描述 output ...

codevs 1039 數的劃分

題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 問有多少種不同的分法。輸入描述 input description 輸入 n,k 6輸出描述 outpu...

codevs 1039 數的劃分

codevs 1039 數的劃分 題目描述 description 將整數n分成k份,且每份不能為空,任意兩種劃分方案不能相同 不考慮順序 問有多少種不同的分法。例如 n 7,k 3,下面三種劃分方案被認為是相同的。1 1 5 1 5 1 5 1 1 輸入描述 input description 輸...