F - 放蘋果
POJ - 1664
把M個同樣的蘋果放在N個同樣的盤子里牍戚,允許有的盤子空著不放侮繁,問共有多少種不同的分法?(用K表示)5如孝,1宪哩,1和1,5第晰,1 是同一種分法锁孟。
Input
第一行是測試數(shù)據(jù)的數(shù)目t(0 <= t <= 20)。以下每行均包含二個整數(shù)M和N茁瘦,以空格分開品抽。1<=M,N<=10甜熔。
Output
對輸入的每組數(shù)據(jù)M和N桑包,用一行輸出相應的K。
Sample Input
1
7 3
Sample Output
8
解法:遞歸纺非,兩種情況。
- m<n 至少有一個盤子為空赘方,去掉一個空盤子不影響排列次數(shù)烧颖,f(m,n)=f(m,n-1)
2.m>=n 如果盤子都有蘋果,則都去掉一個也不影響排列次數(shù)窄陡,此時f(m,n)=f(m-n,n)炕淮,如果有盤子為空則此時f(m,n)=f(m,n-1),所以此情況f(m,n)=f(m-n,n)+f(m,n-1)
遞歸出口為跳夭,m=0涂圆,返回1们镜,n=1,返回1润歉。
代碼:
#include<iostream>
using namespace std;
int apple(int m,int n){
if(m==0||n==1)
return 1;
if(m<n)
return apple(m,n-1);
else
return apple(m-n,n)+apple(m,n-1);
}
int main()
{
int num;
cin>>num;
while(num--){
int m,n;
cin>>m>>n;
cout<<apple(m,n)<<endl;
}
}