算法第三章作业
算法第三章作业
1. 题目:挖地雷
题目详情:在一个地图上有n个地窖(n≤200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,且保证都是小序号地窖指向大序号地窖,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任意一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。
1.1 根据最优子结构性质,列出递归方程式:
递归方程式:f[i]=max{a[i]+f[j],f[i]}; (1<=i<=n,i+1<=j<=n,b[i][j]=1)
1.2 给出填表法中表的维度、填表范围和填表顺序。
表的维度:一维。
填表范围:1到n。
填表顺序:从后面开始填。
1.3 分析该算法的时间和空间复杂度:
时间复杂度:O(n^2);空间复杂度:O(n^2)。
2. 你对动态规划算法的理解
动态规划的核心思想是把原问题分解成子问题进行求解。就比如我们军训的时候,总参谋长要选出几个优秀学生,那么参谋长就会跟各营营长说进行挑选,营长再命令连长在各个连进行挑选,连长再命令排长再各个排进行挑选,最后选出最优秀的几个学生出来。将原问题分解为若干个子问题,然后递归的求解这些子问题,然后合并子问题的解得到原问题的解。但是这些子问题会有重叠,于是我们会将这些子问题的解存储起来,当下次再次求解这个子问题时,便可以直接拿过来用。
3. 说明结对编程情况
我的结对编程伙伴是方楠楠。在结对编程的过程中,我负责敲打代码,他负责监督指导。
在编程开始时,我们先各自思考,然后一起讨论,择优实行。

浙公网安备 33010602011771号