POJ1664 放蘋果 (母函式)

2021-09-03 00:07:10 字數 2548 閱讀 8232

放蘋果

time limit:1000ms

memory limit:10000k

total submissions:37515

accepted:23090

description

把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?(用k表示)5,1,1和1,5,1 是同一種分法。

input

第一行是測試資料的數目t(0 <= t <= 20)。以下每行均包含二個整數m和n,以空格分開。1<=m,n<=10。

output

對輸入的每組資料m和n,用一行輸出相應的k。

sample input

1

7 3

sample output

8
思路:多校見過類似的題目,簡單母函式題目,不過比賽的時候,直接給出了解題分析:用的遞迴寫的,感覺不是太理解。

1 #include 2 #include 3 #include 4 #include 

5 #include 6 #include

7 #include 8 #include

9 #include 10 #include 11 #include 12 #include 13 #include 14

using

namespace

std;

15#define mem(a,b) memset((a),(b),sizeof(a))

16#define mp make_pair

17#define pb push_back

18#define fi first

19#define se second

20#define sz(x) (int)x.size()

21#define all(x) x.begin(),x.end()

22 typedef long

long

ll;23

const

int inf = 0x3f3f3f3f;24

const ll inf =0x3f3f3f3f3f3f3f3f;25

const

double pi = acos(-1.0

);26

const

double eps = 1e-5;27

const ll mod = 1e9+7;28

//head

2930

int fun(int m, int

n) 38

39int

_, n, m;

40int

main()

45 }

理解母函式就是一道裸題,寫出各個式子,然後計算,係數即為答案。

可以理解為拿幾個1,拿幾個5,這樣就避免了重複。

1 #include 2 #include 3 #include 4 #include 

5 #include 6 #include

7 #include 8 #include

9 #include 10 #include 11 #include 12 #include 13 #include 14

using

namespace

std;

15#define mem(a,b) memset((a),(b),sizeof(a))

16#define mp make_pair

17#define pb push_back

18#define fi first

19#define se second

20#define sz(x) (int)x.size()

21#define all(x) x.begin(),x.end()

22 typedef long

long

ll;23

const

int inf = 0x3f3f3f3f;24

const ll inf =0x3f3f3f3f3f3f3f3f;25

const

double pi = acos(-1.0

);26

const

double eps = 1e-5;27

const ll mod = 1e9+7;28

//head

29int c1[20], c2[20];//

c1存展開式的係數,c2計算時儲存

30int

_, m, n;

31int

main()

38for(int i = 2; i <= n; i++) 43}

44for(int i = 0; i <= m; i++) 48}

49 printf("

%d\n

", c1[m]);//

次數為m的係數即為答案50}

51 }

poj 1664 放蘋果(dfs dp 母函式)

題目 description 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1 是同一種分法。input 第一行是測試資料的數目t 0 t 20 以下每行均包含二個整數m和n,以空格分開。1 m,n 10。output 對輸入的每組...

poj1664放蘋果 遞迴

放蘋果time limit 1000ms memory limit 10000k total submissions 23149 accepted 14694 description 把m個同樣的蘋果放在n個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?用k表示 5,1,1和1,5,1...

poj 1664 放蘋果 遞推

解題思路 我們不妨令f m,n 表示m個蘋果放到n個盤子裡有多少種放法,下面對不同的情況給予討論 1 當盤子數為1的時候,只有一種放法就是把所有蘋果放到乙個盤子裡。2 當蘋果數為0的時候,也只有一種放法。3 當m n時,也分兩種情況討論,一種是至少有乙個盤子裡不放蘋果,這樣子就相當於f m,n 1 ...