算法第三章作业

1.“挖地雷”分析

1.1 根据最优子结构性质,列出递归方程式

f[i]表示记录从i出发能够挖到的最多地雷数量

b[i][j]表示从i到j是否连通

a[i]表示i处的地雷数

则递归方程式:

if(b[i][j]){
   f[i]=max(f[i],f[j]+a[i])
}

1.2 给出填表法中表的维度、填表范围和填表顺序。

f[ ]为一维表,填表范围为f[1]~f[n],填表顺序为从后面填起。

1.3 分析该算法的时间和空间复杂度

时间复杂度为0(n^2),空间复杂度为0(n^2)

2.对动态规划算法的理解

动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使问题能够以递推的方式解决。动态规划算法将待求解的问题分解为若干个子问题,按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。

拆分问题、定义问题状态以及状态之间的关系我认为这两步是最重要的。

3.结对编程情况

本次的结对编程我是负责打代码的那一个,对动态规划算法的学习我还是比较陌生,理解的不够,我的搭档就一步一步分析,指导我怎么打,我在打代码和她的讲解过程中一步一步理清思路,也算是有了一点头绪,稍微理解了动态规划算法的分析方法。我认为这次结对编程也让我受益良多。

posted @ 2020-10-31 10:18  Heyuting  阅读(55)  评论(0编辑  收藏  举报