回 帖 发 新 帖 刷新版面

主题:[讨论]双栈出列问题

题目应该很大众化了 有N个车厢 排成一列(1,2,3...N) 经过两个栈 问有多少种出栈的可能 我想出一种DP的方法 但不知道对不对
设 m[i]为i各车厢出单栈的可能数 s为N个车厢出双栈的可能数 那么
for j:=0 to N-1 do
  s:=m[j]*j!+m[N-j-1]*(N-j-1)!
其中有三个问题
1.这种算法是否正确?
2.i个车厢出单栈的可能数如何用DP来算
3.数据规模太大 能否有那位高人提供一下200以内的测试数据

回复列表 (共1个回复)

沙发

对不起 这道题的计算公式我弄错了 本来是求N-1中j的组合及N-1中N-j-1的组合 我写成求排列了 特此订正 另外 单栈出列的转移方程我也已经知道了 是
n[i,j]:=n[i-1,j]+n[i,j+1]
i表示输出端的车厢的数量 j表示输入端的车厢的数量
处状态为 n[0,N]
末状态为 n[N,0]

我来回复

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