Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
使用消息传递的思想解决这个问题。使用这种方法编程个人认为更有助于提高程序可读性。。 为助于理解,以下称题目所给数据为“小木片”长度,所求数值为“小木棒”长度。 同样也是qsort从大到小排序木片,再依次尝试小木棒长度值i。 令可能的最小小木棒长度为i,for(i = max; i < sum; i++)递归,递归之中: 定义消息: enum{SUCCEED, ABORT, CONTINUE, ROLLBACK, NEXT, CNGSTK}; 含义如下: SUCCEED 成功拼完所有小木棒(得到最终的i) ABORT 跳出(未使用) CONTINUE继续此轮(i++)。用于匹配到一个小木片的时候 ROLLBACK返回上一级递归。用于此轮尝试过所有小木片,但全部失配的时候 NEXT 继续此轮并跳到下一个非当前长度的木片(i+=一定值)。用于未匹配到当前小木片的时候 CNGSTK 刚完成一个小木棒 详细分析起来总共可以有10处剪枝,使用前9处剪枝可以POJ AC,使用10处剪枝可以跑BT的64数据(但不保证正确。。) 代码在回复中,欢迎参考。 Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator