CUC-SUMMER-3-F

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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 自学简笔画,第5周结束了,从开始拿起笔画画,到今天结束,35天,差不多38个小时左右。第36天画蓝精灵...
    Kimmy_Xiao阅读 1,973评论 6 6
  • 是要有多努力才能达到想要的高度,北京师范大学。。。。。加油自己
    贺芸萱阅读 214评论 0 0
  • 最近几个月过得实在是很随便,都没有精致女孩的精致图可以发;本来心想简单生活节可以发点照片,可我实在太懒散了。 不过...
    甜甜甜与我的阅读 329评论 0 0
  • 那年还没有十八 还是象牙塔里的娃娃 爱哭爱闹永远真实模样 那年还没有十八 心里只想着长大 梦里都是幻想 纯纯的傻傻...
    觉轴阅读 179评论 0 3