算法第三章总结

一、对动态规划算法的理解

在学习了分治法和动态规划之后,会发现两者之间有相类似的地方。其实质都是把一个规模较大的子问题分解成规模较小的子问题去解决。但是两个算法之间所不同的是,动态规划算法所分解出来的子问题之间存在重叠的问题。所以动态规划算法其实相比之下需要去解决子问题的重叠问题。而且动态规划有时候也有一个输出最优解的要求,那么也需要去想出相应的输出方式。构造最优解的方式一般就是建造一个二维数组用来记录子问题的答案,这样输出时就会比较方便。时间复杂度上动态规划算法还是很可观的。但是相比之下,空间复杂度需要具体情况具体分析。在有的情况下,二位数组构建出来之后不是每一个数组位置都记录了答案。例如在课本矩阵连乘问题中,只有二维数组的上三角区域被完全使用,而下半区域并没有被使用到,所以在大规模的问题下可能空间浪费情况会比较严重。所以在空间复杂度上,具体问题具体分析之后可以做出相应的算法改进。

二、编程题的递归方程

1.设b[i]为从0到 i,截至到第 i +1个数值的单调递增子序列的长度,那么有b[0]=1,b[i] = max( b[j], b[i] + 1 )  ( i < j  )

2.m[1][n]为所需最小代价,m[1][i] = 0, m[1][i] = min(m[i][j],min(m[1][i],m[i][j]+m[j][i]))。

三、结对编程情况

由于我结对编程的队友这个星期去徐州参加比赛。所以这个星期的编程基本上是我们两个独自完成的。在交流上会比前三次作业的少,我就是问一下不太复杂的问题,或者把我的一些想法告诉他,让他看看有没有什么问题。虽然完成的过程比较艰难,但是还是挺好的。

 

转载于:https://www.cnblogs.com/xwl2333/p/9866671.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值