算法分析——N个苹果放在N个盘子里的问题

简介: 问题的描述:现在有N个一模一样的苹果,要放在编号为1、2、3……、N的盘子里(假设盘子足够大,能放下所有的苹果),问一共有多少种放法?   算法分析: 用符号F(i,j)表示i个苹果放在j个盘子里的放法数 如果1号盘子里没有苹果,则i个苹果要放在剩余的j-1个盘子里 如果1号盘里有1个...

问题的描述:现在有N个一模一样的苹果,要放在编号为1、2、3……、N的盘子里(假设盘子足够大,能放下所有的苹果),问一共有多少种放法?

 

算法分析:

用符号F(i,j)表示i个苹果放在j个盘子里的放法数

如果1号盘子里没有苹果,则i个苹果要放在剩余的j-1个盘子里

如果1号盘里有1个苹果,则剩余的i-1个苹果放在剩余的j-1个盘子里

如果1号盘里有2个苹果,则剩余的i-2个苹果放在剩余的j-1个盘子里

以此类推

如果1号盘里有i-1个苹果,则剩下的1个苹果放在j-1个盘子里

如果1号盘里有i个苹果,则剩下的j-1个盘子里没有苹果

 

于是得到以下的关系式

F(i,j)=F(i,j-1)+F(i-1,j-1)+F(i-2,j-1)+……+F(1,j-1)+F(0,j-1)

由上面的式子可以得出

F(i-1,j)=F(i-1,j-1)+F(i-2,j-1)+……+F(1,j-1)+F(0,j-1)

回代到①可知

F(i,j)=F(i,j-1)+F(i-1,j)

 

另由定义可知,

F(i,1)=1

F(1,i)=i

 

根据式子③④⑤,推测F(i,j)的计算公式为

F(i,j)=C(i,i+j-1) 注:C(M,N)表示组合数,表示N个里面选M的个数。组合数的计算公式这里不描述了

 

下面用数学归纳法证明式子⑥的正确性

证明:

F(i,1)=C(i,i+1-1)=C(i,i)=1 式子④满足式子⑥

F(1,i)=C(1,1+i-1)=C(1,i)=i 式子⑤满足式子⑥

 

假设F(i,j-1)、F(i-1,j)满足式子⑥

F(i,j-1)=C(i,i+j-1-1)=C(i,i+j-2)

F(i-1,j)=C(i-1,i-1+j-1)=C(i-1,i+j-2)

 

则由式子③可知

F(i,j)=F(i,j-1)+F(i-1,j)=C(i,i+j-2)+C(i-1,i+j-2)=C(i,i+j-1) 满足式子⑥

 

由此证明式子⑥的正确性

 

故计算公式为

F(i,j)=C(i,i+j-1)

 

那么

3个苹果放在3个盘子里的放法数为F(3,3)=C(3,3+3-1)=C(3,5)=10

2个苹果放在4个盘子里的放法数为F(2,4)=C(2,2+4-1)=C(2,5)=10

7个苹果放在7个盘子里的放法数为F(7,7)=C(7,7+7-1)=C(7,13)=1716

10个苹果放在10个盘子里的放法数为F(10,10)=C(10,10+10-1)=C(10,19)=92378

 

N个苹果放在N个盘子里的放法数为F(N,N)=C(N,2N-1)

相关文章
|
Android开发
autojs无Root访问data目录实现
牙叔教程 简单易懂
3974 0
|
机器学习/深度学习 传感器 人工智能
人工智能产业结构
人工智能产业结构
1034 0
|
Ubuntu Java Linux
Manjaro Linux 入门使用教程
Manjaro 是一款基于 Arch LInux 的自由开源发行版,它吸收了 Arch Linux 优秀丰富的软件管理,同时提供了稳定流畅的操作体验。
7046 1
Manjaro Linux 入门使用教程
|
存储 缓存 网络协议
freeswitch使用说明
freeswitch使用说明
freeswitch使用说明
|
小程序 JavaScript
微信小程序:页面Page和组件Component生命周期执行的先后顺序
微信小程序:页面Page和组件Component生命周期执行的先后顺序
964 0
微信小程序:页面Page和组件Component生命周期执行的先后顺序
|
6月前
|
人工智能 小程序 API
OpenClaw是什么?用无影云电脑安装龙虾更简单,只需3部,保姆级教程来了
阿里云无影云电脑上线OpenClaw(龙虾AI助手)专属镜像,阿里云OpenClaw官方页面: https://t.aliyun.com/U/McEnoK 预装VS Code、钉钉、WPS等,支持飞书/钉钉/微信/QQ一键部署。3步即可完成购买、启动与API配置,实现文件操作、多工具联动及7×24小时个人Agent运行。(239字)
1008 5
|
6月前
|
人工智能 安全 数据可视化
OpenClaw低成本部署指南:阿里云68元/年+免费Token,个人入门首选!
想低成本部署OpenClaw?阿里云轻量服务器仅68元/年(2核2G),搭配百炼100万免费Token,一键安装、零代码配置,轻松接入企微/钉钉/飞书等IM,小白也能30分钟上线专属AI助手!
940 2
|
Python
pyqt 界面卡顿 解决办法 多线程
pyqt 界面卡顿 解决办法 多线程
680 0
|
编解码 网络协议
如何轻松地 rip 3D Blu-ray:详细步骤指南
随着3D电影和家庭影院的普及,越来越多的人希望将3D Blu-ray电影转换为数字文件,以便在多种设备上播放。本文介绍了使用DVDFab、MakeMKV+HandBrake和Leawo Blu-ray Ripper等软件轻松rip 3D Blu-ray的方法,帮助用户享受高质量的3D观影体验。这些工具不仅提供了便捷性和高质量的输出,还能节省存储空间。
1579 9
|
数据采集 存储 人工智能
掌握这4个绘制技术架构图要点,提升AI产品经理跨团队沟通
三桥君深入解析AI产品经理必备技能——技术架构图的绘制方法。文章详细阐述了技术架构图的三大作用、绘制关键思考、方法论及案例分析,助力提升跨团队沟通效率与项目成功率。适合希望掌握技术逻辑、推动AI产品落地的产品经理阅读学习。
719 2

热门文章

最新文章