放苹果

来源:互联网 发布:软件技术服务包括什么 编辑:程序博客网 时间:2024/06/10 07:47
/*题目:放苹果M个相同苹果放到N个相同篮子里有多少种放法,允许有篮子不放。1<=M<=10,1<=N<=10例如5个苹果三个篮子,3,1,1 和 1,1,3是同一种放法输入 7 3输出 8解题思路这道题类似于整数划分的题目,这是很早的一道ACM的题目,主要思路就是考递归。①当苹果数目或者篮子数目为1时候,就只有一种可能②当苹果数目小于篮子数目的时候,按照苹果数目来分配③当苹果数目大于篮子数目的时候,空一个盘子 + 先每个盘子放一个之后再m-n个随便放④当苹果数目等于篮子数目的时候,每个盘子放一个 + 空一个盘子*/#include<bits/stdc++.h>using namespace std;int apple(int n,int k)    {    if(n==1||k==1)return 1;    if(n<k)return apple(n,n);    if(n==k)return apple(n,k-1)+1;    if(n>k)return apple(n-k,k)+apple(n,k-1);    return 0;}int main()    {    int n,k;    while(cin>>n>>k)        {        cout<<apple(n,k)<<endl;    }    return 0;}

原创粉丝点击