CodeVS 1039 數的劃分

2022-04-10 00:08:41 字數 1059 閱讀 5629

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

求自然數n分成k份的方案數。

這是一道十分經典的劃分型dp題。

首先定義陣列f,用fi,j表示數字i被分為j份的方案數。

則可以推出狀態轉移方程f[i,j]=f[i-j,j]+f[i-1,j-1],具體解釋:

1、f[i-j,j]表示的是將i分為不包含1的方案的總個數,例如,4(=7-3)分成3份可以分為,則7可以分為->【共1種【注意下劃線部分

2、f[i-1,j-1]表示的是將i分為最小值為1的方案的總個數,例如,6(=7-1)分成2(=3-1)份可以分為,則7可以分為【共3種

3、所以f[7,3]=f[4,3]+f[6,2]=1+3=4

推出方程這道題也就解決了,下面**:

1

var a,f:array[-100..200,0..10] of

longint;

2var

i,j,n,k:longint;

3begin

4readln(n,k);

5for i:=1

to n do

6begin

7 f[i,1]:=1;8

for j:=2

to k do f[i,j]:=f[i-j,j]+f[i-1,j-1];9

end;

10writeln(f[n,k]);

11end.

view code

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 輸...

codevs1039 數的劃分 黃金 dp

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