ACM PKU 1664 放蘋果 類似整數(shù)劃分問題的遞歸
Time Limit:1000MS Memory Limit:10000K
Total Submit:6074 Accepted:3764
把M個(gè)同樣的蘋果放在N個(gè)同樣的盤子里,允許有的盤子空著不放,問共有多少種不同的分法?(用K表示)5,1,1和1,5,1 是同一種分法。
Input
第一行是測(cè)試數(shù)據(jù)的數(shù)目t(0 <= t <= 20)。以下每行均包含二個(gè)整數(shù)M和N,以空格分開。1<=M,N<=10。
Output
對(duì)輸入的每組數(shù)據(jù)M和N,用一行輸出相應(yīng)的K。
Sample Input
17 3
Sample Output
8
Source
lwx@POJ
看到這道題立即想到了遞歸的經(jīng)典案例:整數(shù)劃分問題。
將正整數(shù)n表示成一系列正整數(shù)之和:n=n1+n2+…+nk,
其中n1≥n2≥…≥nk≥1,k≥1。
正整數(shù)n的這種表示稱為正整數(shù)n的劃分。求正整數(shù)n的不
同劃分個(gè)數(shù)。
例如正整數(shù)6有如下11種不同的劃分:
6;
5+1;
4+2,4+1+1;
3+3,3+2+1,3+1+1+1;
2+2+2,2+2+1+1,2+1+1+1+1;
1+1+1+1+1+1。
將最大加數(shù)x不大于m的劃分個(gè)數(shù)記作q(n,m)
有
1 n=1 || m=1
q(n,m) = { q(n,n) n<m
1+q(n,n-1) n=m
q(n,m-1)+q(n-m,m) n>m>1
重點(diǎn)在n>m>1的情況。
呵呵,當(dāng)時(shí)我還花了好些功夫才理解到哦,真是精妙。有了這一點(diǎn)經(jīng)驗(yàn),放蘋果的問題就容易了,我們也有遞歸式
將在m個(gè)盤中放n個(gè)蘋果記作fun(m,n),且不能有空盤。(題目中的可以有空盤 不方便遞歸,我們循環(huán)累加)
對(duì)于fun(m,n)
1 n=1||m=n
resulut = 0 n<m
∑ fun(n-m,i) n>=m , i=1..n
當(dāng)n>=m時(shí),是不是方法和整數(shù)劃分問題的n>m>1時(shí)很像呢?呵呵
于是我們得到代碼

2

3



4

5

6

7

8



9

10

11

12

13

14

15

16



17

18

19

20

21



22

23

24

25

26

27

28

posted on 2007-09-14 02:05 流牛ζ木馬 閱讀(2753) 評(píng)論(9) 編輯 收藏 引用