nyoj 176 整數劃分(二)

2022-08-29 15:54:26 字數 1289 閱讀 9676

時間限制:1000 ms  |  記憶體限制:65535 kb

難度:3

描述輸入

第一行是乙個整數t表示共有t組測試資料(t<=50)

每組測試資料都是兩個正整數m,n,其中(1<=n<=m<=100),分別表示要拆分的正數和拆分的正整數的個數。

輸出輸出拆分的方法的數目。

樣例輸入

2

5 25 3

樣例輸出

2

2

**

[張云聰]原創

上傳者張云聰

在整數劃分(一)的基礎上改編的,整數劃分(一)裡有詳解:

針對此題,方法和整數劃分(一)類似:

首先 定義f ( i , j )為整數  i  分成 j  個整數 的情況

經過分析可得f(i, j )可轉化為兩個部分:

一:  假設 分成的  j  個整數中 不包含1。。那麼 此時 f (i-j,j)就是這部分的總情況,既然想讓他不包含1,就先將j個整數都分為1,此時i變為i-j,再將i分為j個整數,這j個整數再加上原先分的1,就肯定不會再有1出現了。如果i-jf (i-j,j)的值為0

二: 假設分成的j個整數至少有乙個1。。那麼此時f(i-1,j-1)

**如下(一)

1 #include 2

int f(int m,intn)3

11int

main()

1221

return0;

22}23//

ac24

//首先 定義f ( i , j )為整數 i 分成 j 個整數 的情況

25//

經過分析可得f(i, j )可轉化為兩個部分:

26//

一: 假設 分成的 j 個整數中 不包含1。。那麼 此時 f (i-j,j)就是這部分的總情況,既然想讓他不包含1,就先將j個整數都分為1,此時i變為i-j,再將i分為j個整數,這j個整數再加上原先分的1,就肯定不會再有1出現了。如果i-j27

//二: 假設分成的j個整數至少有乙個1。。那麼此時f(i-1,j-1)

28//

29

**如下(二):

1 #include 2

int s[110][110];3

int f(int m,intn)4

14int

main()

1524

return0;

25}26//

ac

NYOJ 176 整數劃分(二)

整數劃分 二 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2 輸入第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m...

NYOJ 176 整數劃分(二) (dp)

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2 輸入 第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m 100 ...

nyoj 176 整數劃分(二) dp

題目鏈結 時間限制 1000 ms 記憶體限制 65535 kb 難度 3描述 把乙個正整數m分成n個正整數的和,有多少種分法?例 把5分成3個正正數的和,有兩種分法 1 1 3 1 2 2輸入 第一行是乙個整數t表示共有t組測試資料 t 50 每組測試資料都是兩個正整數m,n,其中 1 n m 1...