HDUOJ 1292 人员分组递推公式推导
来源:互联网 发布:家居装饰设计软件 编辑:程序博客网 时间:2024/06/13 21:56
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1292
问题
一共有n个同学参加夏令营,这些同学进行自由组队(每对人数不限),一共会有多少种不同的组队方案呢?
公式推导
设 f(n, m)(1 <= m <= n) 表示 n 个人分成 m 组,这样子的分组方案数量。
设 F(n) = f(n,1) + f(n,2) + ... + f(n,n),即为 n 个人的总分组方案数量。
可以知道:
f(n,n) = 1(每个人一组,显然只有一种分组方案),
f(n,1) = 1(所有人都在同一个组里,显然只有一种分组方案)。
假如已经推算出 n 个人分成 m 组的分组方案,此时增加一个人依然拆分成m组,相比之前到底改变了什么呢?
- 新人加入到了原来的分组里,那么新人可以在每个方案的 m 组里任选一组来加入,f(n+1, m) = f(n, m) * m;
- 新人单独构成一组,他没有加入任何组,那么想要凑到 m 组只需之前的 n 个人分成 m-1 组的方案分别加上新人所在组,f(n+1, m) = f(n, m-1);
由以上互斥的两种情况合并得:
f(n + 1, m) = f(n, m) * m + f(n, m - 1)
分组方案举例以及带入公式计算校验
aaba babcac ba bcab ca b cabcdacd bac bdad bca bcdabd cab cdad b ca bd ca b cdabc dac b da bc dab c da b c df(1, 1) = 1f(2, 1) = 1f(2, 2) = 1f(3,3) = 1f(3,2) = f(2,2) * 2 + f(2,1) = 3f(3,1) = 1f(4,1) = 1f(4,2) = f(3,2) * 2 + f(3,1) = 3 * 2 + 1 = 7;f(4,3) = f(3,3) * 3 + f(3,2) = 1 * 3 + 3 = 6;f(4,4) = 1F(4) = 15
0 0
- HDUOJ 1292 人员分组递推公式推导
- 错位排列递推公式推导
- HDUOJ 2047(递推)
- 错排的递推公式及推导
- 卡特兰数的递推公式推导
- 错排的递推公式及推导
- 错排的递推公式及推导
- 动态规划/leetcode/直接推导递推公式
- HDUOJ 2046(递推)
- hdu2047-递推公式
- 递推公式小结
- 方差递推公式
- HDUOJ 2086推导
- 公式推导
- 递推、错排公式
- HDU(2047) 递推公式
- 【递推公式】HDU1143Tri Tiling
- 递推公式 【黑科技】
- linux c 正则库
- Windows内核编程基础篇之在线程中睡眠
- struts interceptor
- 士兵突击
- java基本数据类型与包装类型
- HDUOJ 1292 人员分组递推公式推导
- 数据库索引
- 剑指Offer第二章面试题(Java版)
- iOS coreData和MagicalRecord如何分页
- JAVA获得当前tomcat的服务路径
- topcoder ExerciseMachine
- objective-C编程 对象的类型和动态绑定摘要
- 开启apache的url rewrite模块
- 石子合并问题