題目描述 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的時候才是有意義的。
#includeusingnamespace
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...