主题:求助:排队买票问题
wahning
[专家分:0] 发布于 2008-09-18 11:42:00
2n个人,要排队买单价为50元的票看节目,但是有n个人是带着100元钱,n个人带着50元,问有多少种排队方法,才能让售票员不用自己掏钱找零?
请问怎么做啊?
回复列表 (共2个回复)
沙发
JackieRasy [专家分:3050] 发布于 2008-09-18 18:33:00
建立一个栈,这个栈里面只存放50元这个元素,后面的如果是50元就进栈,100元就踢出一个50元的元素出栈,利用深度搜索——可用递归实现,一旦出现栈空,就说明这派法不行,不必进行下去。
板凳
dtdlut [专家分:0] 发布于 2008-09-19 16:04:00
有n张50,n张100, 不妨设总的排队方式可以有f(n)种。则:当售票员第一次没有钱找的时候,不妨设前面已经有i+1张50,同样肯定有i+1张100。由于第一个顾客肯定是50的,而最后一个肯定是100的。故而前面售货员收到的钱共有f(i)种方式。而后面还剩下n-i-1张50的,n-i-1张100的,故有f(n-i-1)种方式排列。所以综上所述:
f(n) = f(i)*f(n-i-1) (其中i 从0 到n-1, 叠加)连加号不好往上打。:)。f(0) = 1, f(1) = 1; 结果是:2n个数中任意取n个的组合/(n+1)
我来回复