动态规划--m个苹果放入n个盘子问题

探讨如何使用动态规划解决将M个苹果放入N个盘子的问题,允许盘子为空。当盘子数多于苹果数,分法为f(m,m),反之则分为有空盘和无空盘两种情况,递归公式为f(m,n)=f(m,n-1)+f(m-n,n)。特殊情况如m=0或n=1有唯一解。同时涉及将整数N拆分为K个整数的和,每个数在A到B之间的分法问题。" 104745642,8499840,Python解决LeetCode股票交易问题,"['算法', 'Python编程', '股票交易']
摘要由CSDN通过智能技术生成
[size=medium]问题描述:
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。

输入
每个用例包含二个整数M和N。0<=m<=10,1<=n<=10。0<=n<=10<=m<=10

1.当盘子数多于苹果数时:则必定有n-m个盘子是空着的。
f(m,n)=f(m,m);
2.当盘子数少于苹果数时(n<=m):
又分两种情况:
<1>当有空盘子时:即至少有一个盘子是空的:f(m,n)=f(m,n-1)
<2>没有空盘子时:即所有的盘子都有苹果,从每个盘子里拿掉一个苹果对结果没有影响:f(m,n)=f(m-n.n)
因此所有可能的情况为f(m,n)=f(m,n-1)+f(m-n.n)。
我们知道当m=0时,只有一种放法,当n=1时只有一种放法。[/size]
递归法:
int function(int m ,int n){
  
if(m==0||n==1){
return 1;
}
if(m<n){
return function(m,m);
}
if(m>n){
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值