LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭

妹子的动态规划题目,记录下解题思路

二面是一个年轻帅哥,问了项目,写了一个atoi(呵呵,又是atoi),还有一个算法题,说有n个节点n条边组成一个圈,每个节点上面有一个数,边上有一个+或*,如果消掉某条边,其相邻两个节点就用这个运算符合并。这样一路消边到底,问用什么过程能让最后得到的数最大(dp题) 

这题我竟然还是看着妹子的提示,知道用动归,然后竟然想了n久。还是功力和妹子比差的有点远,继续努力吧。


解法:

假设列子为:,那么dp的状态转移方程为:

dp(new) = {[1,max(2,3,4)],[2,max(1,3,4)],[3,max(1,2,4)],[4,max(1,2,3)]}

我们以[1...

二面是一个年轻帅哥,问了项目,写了一个atoi(呵呵,又是atoi),还有一个算法题,说有n个节点n条边组成一个圈,每个节点上面有一个数,边上有一个+或*,如果消掉某条边,其相邻两个节点就用这个运算符合并。这样一路消边到底,问用什么过程能让最后得到的数最大(dp题) 

这题我竟然还是看着妹子的提示,知道用动归,然后竟然想了n久。还是功力和妹子比差的有点远,继续努力吧。


解法:

假设列子为:妹子的动态规划题目,记录下解题思路 - silver9886@126 - silver9886@126的博客,那么dp的状态转移方程为:

dp(new) = {[1,max(2,3,4)],[2,max(1,3,4)],[3,max(1,2,4)],[4,max(1,2,3)]}

我们以[1,max(2,3,4)]做进一步展开,其他的类似

[1,max(2,3,4)]=max{1+max(2,3,4),1 * max(2,3,4)}=1+max(2,3,4)=1+max{2*max(3,4),4+max(2,3)}(这里注意没有3的原因是3和1是不相邻的,因此3和1是无法发生作用关系的)=1+max{2*(3+4),4+2*3}=1+14 = 15.

其他的式子类似。

这里注意有些中间的计算过程是一样的,因此,如果可以,将中间计算过程存储起来,在后续中不需计算了。这也是动归快的原因。

展开全文

silver9886

联系我们|招贤纳士|移动客户端|风格模板|官方博客|侵权投诉 Reporting Infringements|未成年人有害信息举报 0571-89852053|涉企举报专区
网易公司版权所有 ©1997-2024  浙公网安备 33010802010186号 浙ICP备16011220号-11 增值电信业务经营许可证:浙B2-20160599
网络文化经营许可证: 浙网文[2022]1208-054号 自营经营者信息 工业和信息化部备案管理系统网站 12318全国文化市场举报网站
网信算备330108093980202220015号 网信算备330108093980204230011号