1. 程式人生 > >C/C++ 演算法分析與設計:遞迴(放蘋果)

C/C++ 演算法分析與設計:遞迴(放蘋果)

題目描述

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

輸入

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

輸出

對輸入的每組資料M和N,用一行輸出相應的K。

樣例輸入

1
4 2

樣例輸出

3
#include<iostream>
using namespace std;
int f(int n,int m);
int main()
{
	int limit;
	cin>>limit;
	while(limit--)
	{
		int n,m;
		cin>>m>>n;
		cout<<f(n,m)<<endl;
	}
	return 0;
}
int f(int n,int m)
{
	if(m==0||n==1)
		return 1;
	if(n>m)
		return f(m,m);
	else
		return f(n,m-n)+f(n-1,m);
}