放苹果

原创 2016年08月29日 09:51:19

对于m个苹果,n个盘子f(m,n):

如果m<n,那么就跟m个盘子,m个苹果是一样的f(m,m)。

如果m>n,那么有两种情况:一种有空盘子的情况,一种没有空盘子的情况,两种情况不重叠且加一起一定为情况总数。

第一种情况:m个苹果放在n-1个盘子里,因为至少有1个空盘子,即f(m,n-1)

第二种情况:每个盘子都至少有一个苹果,m-n个苹果再放到n个盘子里,即f(m-n,n)。

由上面两种情况得到递归式f(m,n)=f(m,n-1)+f(m-n,n)。

#include <iostream>
using namespace std;
int count(int a,int b)  
{  
   if(a==0||b==1)
  return 1;
    if(a<b) 
return count(a,a);
else
{
return count(a-b,b)+count(a,b-1);
}
}  
int main()
{
 int a,b;
 cin>>a>>b;
 cout<<count(a,b)<<endl; 
 return 0;
}

相关文章推荐

递归——放苹果

  • 2015年11月01日 15:56
  • 397B
  • 下载

华为OJ训练之0026-170108-放苹果

================================================题目描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)...

放苹果

Language: Default 放苹果 Time Limit: 1000MS   Memory Limit: 10000K       ...

poj1664 放苹果

Description把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。Input第一行是测试数据的数目t(0 ...

华为在线编程-放苹果

放苹果 递归

[数据结构与算法]第一周(二):线性表---位查询&&放苹果

位查询 描述 给出N个范围在[0, 65535]的整数,编程支持以下的操作:     (1)修改操作:C d,所有的数都增加d。如果超过65535,把结果模65536。 0     (2)查询操作:...

POJ 666 放苹果

666:放苹果 总时间限制: 1000ms 内存限制: 65536kB 描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同...

POJ 放苹果

总时间限制: 1000ms 内存限制: 65536kB 描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:放苹果
举报原因:
原因补充:

(最多只允许输入30个字)