美文网首页
CUC-SUMMER-3-F

CUC-SUMMER-3-F

作者: Nioge | 来源:发表于2017-08-03 09:17 被阅读0次
    F - 放苹果
    POJ - 1664

    把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


    解法:递归,两种情况。

    1. m<n 至少有一个盘子为空,去掉一个空盘子不影响排列次数,f(m,n)=f(m,n-1)
      2.m>=n 如果盘子都有苹果,则都去掉一个也不影响排列次数,此时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;
        }
    }
    

    相关文章

      网友评论

          本文标题:CUC-SUMMER-3-F

          本文链接:https://www.haomeiwen.com/subject/momulxtx.html