合理放球
总时间限制: 1000ms 内存限制: 65536kB
描述
n个各不相同球放入m个相同的盒子里,球全部放完后,要求最后没有空盒!求不同的放法总数。
输入
一行两个数n和m
n表示球数,m表示盒子数
(0<n≤20)(0≤m≤20)
输出
不同且合理的放法总数
样例输入

3 2

样例输出

3

提示
递推
第二类stirling数
思路点拔:经典的第二类斯特林数,在这里我就写一写推导过程
设有n个不同的球,分别用b1,b2,……bn表示。从中取出一个球bn,bn的放法有以下两种:
①bn独自占一个盒子;那么剩下的球只能放在m-1个盒子中,方案数为S2(n-1,m-1);
②bn与别的球共占一个盒子;那么可以事先将b1,b2,……bn-1这n-1个球放入m个盒子中,然后再将球bn可以放入其中一个盒子中,方案数为m*S2(n-1,m)。
综合以上两种情况,可以得出第二类Stirling数定理:
【定理】S2(n,m)=m*S2(n-1,m)+S2(n-1,m-1) (n≥m≥1)
边界条件可以由定义推导出:
S2(n,0)=0;S2(n,1)=1;S2(n,n)=1;S2(n,m)=0(m>n)。

#include<cstdio>
long long a[25][25]; //a数组是用来递推的数组,注意本题需要使用longlong类型
int main()
{int m,n;scanf("%d %d",&n,&m); //输入球数以及盒子数for(int i=1;i<=n;i++) //外层循环枚举球数{for(int j=1;j<=m;j++) //内层循环枚举盒子数{if(i<j||j==0) break; //如果盒子数大于球数,或者球数为0,就没有方法else if(i==1||j==1) a[i][j]=1; //如果盒子数等于1或者球数等于1,就只有一种方法else a[i][j]=a[i-1][j-1]+j*a[i-1][j]; //常规情况}}printf("%lld\n",a[n][m]); //输出解return 0;  //结束
}  

这种递推题往往容易在竞赛中遇到,许多OI选手都不能快速的找到递推式,所以这种题就是凭经验,也要对这些题目进行大致的推测,看看是用哪个递推式,反正就哪几种,变化都不大的,就往上面套就行了,套出来就A了,套不出来就…..

合理放球(递推之第二类斯特林数 C++)相关推荐

  1. java第二类斯特林数编程代码,Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)...

    我bingoyes再高精用STL就饿死,死外边! string真的爽... 斯特林数模板题:\(S(n,m) = S(n-1,m-1)+S(n-1,m)*n\) #include #include # ...

  2. 第二类Stirling数(第二类斯特林数)

    第二类Stirling数(第二类斯特林数) 定义 第二类Stirling数表示把nnn个不同的数划分为mmm个集合的方案数,要求不能为空集,写作S(n,m)S(n,m)S(n,m). 和第一类Stir ...

  3. 第一类斯特林数 / 第二类斯特林数 / 贝尔数 小结

    第一类斯特林数 有 nnn 个不同的小球,将它们串成 mmm 条项链,有多少种不同的方案? 第一类斯特林数的表示方法为 [nm]\left[\begin{matrix}n\\m\end{matrix} ...

  4. [学习笔记]第一类/第二类斯特林数

    前置知识 · 组合数学基础 · 容斥原理 · 生成函数 · FFT/NTT · 多项式exp,多项式ln,多项式快速幂,多项式平移 一些规定 · 下降幂 xn‾=∏i=1n(x−i+1)x^{\und ...

  5. 第一类和第二类斯特林数

    第一类斯特林数 第一类斯特林数定义如下: \(s_1(n,k)\)表示\(n\)个元素组成\(k\)个圆排列的方案数. 其中\(n\)个元素的圆排列定义为\(n\)个元素围成一圈的排列,两个圆排列本质 ...

  6. 新疆大学(新大)OJ xju 1006: 比赛排名 第二类斯特林数+阶乘

    题目链接:http://acm.xju.edu.cn/JudgeOnline/problem.php?id=1006 第二类斯特林数: 第二类Stirling数实际上是集合的一个拆分,表示将n个不同的 ...

  7. 莓良心(第二类斯特林数)

    莓良心 problem solution code problem 莓在执行任务时,收集到了 nnn 份岩浆能源,其中第 iii 份的能量值是 wiw_iwi​ ,她 决定将它们分成恰好 kkk 组带 ...

  8. 【组合数学】第二类斯特林数

    一.定义 第二类Stirling数即:,又可记为[与第一类的表示有大小写的区别].其表示将n个不同的元素分成m个集合的方案数. 二.理解关键词句 1.集合的一个拆分(表示将n个不同的元素拆分成m个集合 ...

  9. 第二类斯特林数学习笔记

    第二类斯特林数 定义 第二类斯特林数 S(n,m)S(n,m)S(n,m) 表示将 nnn 个不同的小球放到 mmm 个相同的盒子里的方案数.S(n,m)S(n,m)S(n,m) 也可以用 {nm}\ ...

最新文章

  1. Object C为UILabel添加点击事件
  2. 你知道出现“乱码”的原因是什么吗?(4)
  3. 第5节 三个败家子(5)——刘封,被封印的秘密
  4. 形容人的内核是什么意思_识人核心是什么?
  5. “农业大数据”专题征文通知
  6. 明晚直播预告丨Oracle 19c X86下移经验分享
  7. Bailian1835 POJ1835 宇航员【模拟】
  8. 读《疯狂的站长》- 回顾反思我的个人站长路
  9. IOS测试版全版本固件下载集合
  10. Javascript连接数据库并查询和插入数据
  11. gp数据库与pg数据库
  12. python模拟登录中国海洋大学教务系统(青果)- 爬取学期所有专业课至excel - 并进行课表排课(一)
  13. ble HCI 流控机制
  14. js的爬山之路原型与原型链~~狂徒李四
  15. 力扣:121. 买卖股票的最佳时机 题解
  16. python简单的分形图片
  17. 1.Object.create() 是什么
  18. Spring RestTemplate为何必须搭配MultiValueMap?
  19. 黑客在 Windows 95 邮件应用中发现彩蛋
  20. 前端常用的CSS工具库

热门文章

  1. SwiftUI官方示例入门
  2. SpringSecurity给用户授权,一个用户能同时拥有多种身份Role,及权限鉴权注解方法hasRole及hasAuthority的使用区别
  3. 如此Fun的代码注释,原来程序员都是段子手
  4. 网络音箱的保养,ip网络音箱安装
  5. JSONField注解+继承自由切换JSON的key
  6. JavaScript-去除数组中重复元素
  7. 超简单五步实现VOS3000客户端呼入配置
  8. Chrome浏览器无痕浏览真的无痕吗?
  9. linux操作系统中添加永久交叉编译工具链
  10. 解决Error creating bean with name xxx defined in class path resource [applicationContext.xml]错误