卡塔兰数---电影院排队
来源:互联网 发布:24网络配线架打法图解 编辑:程序博客网 时间:2024/04/27 13:50
题目:有2n个人排队进电影院,票价是50美分。在这2n个人当中,其中n个人只有50美分,另外n个人有1美元(纸票子)。愚蠢的电影院开始卖票时1分钱也没有。
问: 有多少种排队方法 使得 每当一个拥有1美元买票时,电影院都有50美分找钱
注:
1美元=100美分
拥有1美元的人,拥有的是纸币,没法破成2个50美分
题解:如果不考虑电影院能否找钱,那么一共有(2n)!/[n!n!]种排队方法(即从2n个人中取出n个人的组合数),对于每一种排队方法,如果他会导致电影院无法找钱,则称为不合格的,这种的排队方法有(2n)!/[(n-1)!(n+1)!](从2n个人中取出n-1个人的组合数)种,所以合格的排队种数就是(2n)!/[n!n!]- (2n)!/[(n-1)!(n+1)!] =(2n)!/[n!(n+1)!]。
本题结果就是卡塔兰数的通项公式
卡塔兰数的通项公式为 C[n] = (2n)! /( (n+1)! * n! )
前几项为 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, ...
算法:本题可用动态规划的方法求解,时间复杂度O(n)
- 卡塔兰数---电影院排队
- 电影院买票问题->排队找钱
- 电影院
- 递归求解排队进电影院问题,附带JAVA代码
- 广州市电影院
- 深圳电影院
- 天堂电影院
- 天堂电影院
- 《天堂电影院》
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- 排队
- DirTraversal.java
- 使用java.util.zip对字符串进行压缩和解压缩
- 字符串压缩 java
- 如何让任务栏一行同时显示日期和时间
- Android中与JSON相关的应用
- 卡塔兰数---电影院排队
- android解压zip到sdcard,并读取解压缩后文件中的xml特定信息,并保存到数据库
- It's Time 2
- GAE和heroku
- java生成一个XML文件,并且将该文件压缩成ZIP格式后再写到硬盘上
- Android 3.0 访问WebService 出现 android.os.NetworkOnMainThreadException异常
- android曲线图
- java Random相关
- java中md5加密