codevs 1039 數的劃分

2022-05-23 15:57:11 字數 937 閱讀 1061

題目描述 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

4資料範圍及提示 data size & hint

芒果君:學dp也有一陣子了,然而這個簡單的劃分型dp還是不太會寫,主要是沒有思路otz……這道題學遞迴的時候寫過,然而用dp的話就很茫然,看完題解,我的理解是醬紫的,首先這個狀態轉移方程分為兩部分,第一部分:f[i-j][j],就是現在k個位置上鋪一層"1",然後再把i-j個數分成j份的方案「搭」在上面,這樣就涵蓋了所有「每一位都不為1」的方案,剩下的就是第二部分:f[i-1][j-1],意思是先把"1"放在第1位上,剩下i-1個數分成j份。需要注意的是,你在一開始要初始化i個數分成1份,方案數是1,還要照顧到f[1][1],所以把f[0][0]置成1。哦對了!i>=j的時候才是有意義的。

#includeusing

namespace

std;

int f[210][8

],n,k,i,j;

intmain()

for(i=1;i<=n;++i)}}

printf("%d

",f[n][k]);

return0;

}

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 數的劃分

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

codevs1039 數的劃分 黃金 dp

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