1. 程式人生 > >簡單的遞迴——分蘋果到盤子

簡單的遞迴——分蘋果到盤子

把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; }