回 帖 发 新 帖 刷新版面

主题:求助:排队买票问题

2n个人,要排队买单价为50元的票看节目,但是有n个人是带着100元钱,n个人带着50元,问有多少种排队方法,才能让售票员不用自己掏钱找零? 

请问怎么做啊?

回复列表 (共2个回复)

沙发


建立一个栈,这个栈里面只存放50元这个元素,后面的如果是50元就进栈,100元就踢出一个50元的元素出栈,利用深度搜索——可用递归实现,一旦出现栈空,就说明这派法不行,不必进行下去。


板凳

有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)

我来回复

您尚未登录,请登录后再回复。点此登录或注册