m个苹果放在n个盘子里面有多少种放法?(动态规划)

简介: 把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?

题意:


把m个同样的苹果放在n个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? 5,1,1和1,5,1 是同一种分法。


思路:


设f(m,n) 为m个苹果,n个盘子的放法数目,则先对n作讨论,如果n>m,必定有n-m个盘子永远空着,去掉它们对摆放苹果方法数目不产生影响;即  if(n>m) f(m,n) = f(m,m)  当n<=m时,不同的放法可以分成两类:即有至少一个盘子空着或者所有盘子都有苹果,前一种情况相当于f(m,n) = f(m,n-1); 后一种情况可以从每个盘子中拿掉一个苹果,不影响不同放法的数目,即f(m,n) = f(m-n,n). 而总的放苹果的放法数目等于两者的和,即f(m,n) =f(m,n-1)+f(m-n,n)。边界条件为m=0或n=1时,只有一种放法。


#include<bits/stdc++.h>
using namespace std;
int fun(int m,int n){
  if(m==0||n==1)
    return 1;
  if(m<n)
    return fun(m,m);
  else
    return fun(m,n-1)+fun(m-n,n); 
}
int main(){
  int m,n,t;
  cin>>t;
  while(t--){
    cin>>m>>n;
    cout<<fun(m,n)<<endl;
  }
  return 0;
}
相关文章
|
算法 C语言 C++
二叉树三种遍历(动态图+代码深入理解)
二叉树三种遍历(动态图+代码深入理解)
3752 3
二叉树三种遍历(动态图+代码深入理解)
|
6月前
|
监控 算法 测试技术
《2D横版平台跳跃游戏中角色二段跳失效与碰撞体穿透的耦合性Bug解析》
本文聚焦2D横版平台跳跃游戏中,角色二段跳失效与碰撞体穿透的耦合性Bug。该问题出现在Unity 2022.3.9f1版本,PC与Switch平台的“森林探险”场景中,二段跳失效概率约20%,高平台下落时碰撞体穿透概率15%,且二者常伴随发生。排查发现,问题源于落地判定误判、Rigidbody2D参数不当及物理插值误差。通过重构落地判定(加入射线检测)、动态调整物理参数、优化碰撞体配置与物理引擎适配,经三层测试验证,PC端异常概率降至5%,Switch端降至8%,帧率与负载均达标。文章还沉淀出多平台适配、操作容错设计等开发经验。
384 2
|
存储 安全 开发工具
GitHub 支持双因素认证(2FA)
【9月更文挑战第29天】
2692 6
|
网络协议 算法 网络虚拟化
【计算机网络】数据链路层(超多图详析)
之前学习了原理体系结构中的物理层,也写了非常详细文章。如果没有看可以先去学习一下,这样有助于我们对数据链路层的学习。
【计算机网络】数据链路层(超多图详析)
|
存储 人工智能 C语言
数据结构基础详解(C语言): 栈的括号匹配(实战)与栈的表达式求值&&特殊矩阵的压缩存储
本文首先介绍了栈的应用之一——括号匹配,利用栈的特性实现左右括号的匹配检测。接着详细描述了南京理工大学的一道编程题,要求判断输入字符串中的括号是否正确匹配,并给出了完整的代码示例。此外,还探讨了栈在表达式求值中的应用,包括中缀、后缀和前缀表达式的转换与计算方法。最后,文章介绍了矩阵的压缩存储技术,涵盖对称矩阵、三角矩阵及稀疏矩阵的不同压缩存储策略,提高存储效率。
1100 9
|
存储 缓存 编译器
Linux源码阅读笔记06-RCU机制和内存优化屏障
Linux源码阅读笔记06-RCU机制和内存优化屏障
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】集成学习算法的原理与应用
【4月更文挑战第30天】集成学习通过组合多个基学习器提升预测准确性,广泛应用于分类、回归等问题。主要步骤包括生成基学习器、训练和结合预测结果。算法类型有Bagging(如随机森林)、Boosting(如AdaBoost)和Stacking。Python中可使用scikit-learn实现,如示例代码展示的随机森林分类。集成学习能降低模型方差,缓解过拟合,提高预测性能。
528 3
|
IDE 开发工具 Python
selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge
selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge
1516 3
|
智能硬件
Prompt基础 | 3-Prompt的基本框架
Prompt基础 | 3-Prompt的基本框架
1000 0
Prompt基础 | 3-Prompt的基本框架