P3158 [CQOI2011]放棋子 [动态规划]

博客探讨了CQOI2011中放棋子问题的解决方案,使用动态规划方法进行求解。通过F[i,j,k]表示前k种棋子占据i行j列的方案数,g[i,j,k]表示k个棋子占据i行j列的合法方案数,通过递推公式分别计算这两个量。最后介绍了具体的实现部分。" 84346569,8194746,C语言编程练习题解析,"['C语言', '编程题', '算法', '数据结构']
摘要由CSDN通过智能技术生成

放 棋 子 放棋子

题目描述见链接 .


正 解 部 分 \color{red}{正解部分}

每个棋子都可以占据一行和一列, 且同一行同一列不能出现相同的棋子, 考虑 一个一个棋子放 不如 考虑 一种一种棋子放 ,

F [ i , j , k ] F[i, j, k] F[i,j,k] 表示前 k k k 种棋子占据了 i i i j j j 列的方案数, g [ i , j , k ] g[i, j, k] g[i,j,k] 表示 k k k 个棋子占据 i i i j j j 列的 方案数,

F [ i , j , k ] = ∑ l = 0 i − 1 ∑ r = 0 j − 1 F [ l , r , k − 1 ] ( N − l i − l ) ( M − r j − r ) g [ i − l , j − r , a [ k ] ]            ( i − l ) ( j − r ) ≤ a [ k ] F[i, j, k] = \sum\limits_{l=0}^{i-1} \sum\limits_{r=0}^{j-1} F[l, r, k-1] \begin{pmatrix} N-l \\ i-l \end{pmatrix} \begin{pmatrix} M-r \\ j-r \end{pmatrix} g[i-l, j-r, a[k]]\ \ \ \ \ \ \ \ \ \ (i-l)(j-r) \le a[k] F[i,j,k]=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值