poj1664 放蘋果

放蘋果
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 33602   Accepted: 20799

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

當m==0||m==1||n==1時,只有一種放法;

當m<n時,就是將m個蘋果放到m個盤子的放法數;

當m>=n時,1.至少將一個盤子空置,就是m個蘋果放到n-1個盤子的放法。

                       2.可以將每個盤子先放一個蘋果,然後加上m-n個蘋果放到n個盤子的放法。

代碼:

#include<iostream>
#include<cstdio>
using namespace std;

int M,N;
int f(int m,int n)
{
    if(m==0||n==1||m==1||n==0)
        return 1;
    if(n>m)
        return f(m,m);
    else
        return f(m,n-1)+f(m-n,n);
}
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&M,&N);
        printf("%d\n",f(M,N));
    }
}



發佈了34 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章