簡單的遞迴——分蘋果到盤子
阿新 • • 發佈:2018-11-17
把M個同樣的蘋果放在N個同樣的盤子裡,允許有的盤子空著不放,問共有多少種不同的分法?(用K表示)5,1,1和1,5,1 是同一種分法。
輸入
每個用例包含二個整數M和N。0<=m<=10,1<=n<=10。
樣例輸入
7 3
樣例輸出
8
#include<stdio.h>
int result(int M,int N)
{
if(N==1||M==1) return 1; //如果只有一個蘋果,或者只有一個盤子
else if(M<N) return result(M,M); //如果蘋果比盤子少,就只需要考慮M個蘋果放到M個盤子裡面
else if(M==N) return result(M,M-1)+1;//如果蘋果數和盤子數相等,第一種剛剛好每個盤子一個蘋果,剩下就是(M,M-1)
else
{
return result(M-N,N)+result(M,N-1);//蘋果比盤子多,就是每個盤子一個蘋果後(M-N,N),加上空一個盤子的情況(M,N-1) /*注意這裡面就包括了(M,N-2)*/
}
}
int main()
{
int M,N;
while(scanf("%d%d",&M,&N)!=EOF)
{
printf ("%d\n",result(M,N));
}
return 0;
}