uva 10128

动归

转移方程 :dp(i, j, k) = dp(i – 1, j, k) * (i – 2) + dp(i – 1, j – 1, k) + dp(i – 1, j, k – 1)

i表示此时排第i个人 ;j表示从左可以看到j个人; k 表示从右可以看到k个人;

巧妙的是将要排的第i个人看作是最矮的 所以当这个人站在队列的中间i-2个位置不会影响j和k

而站在最左边j要加1 站在最右边 k要加1


posted @ 2014-02-25 20:04  xlc2845  阅读(72)  评论(0编辑  收藏  举报