算法第三章作业
挖地雷
1.1 递归方程式
b[][] 用0,1表示两地窖之间是否连接 ,1为连接;
a[] 用于存储对应地窖的地雷数
m[i]=max{a[i]+m[j],m[i]} 1<=i<=n,i+1<=j<=n,b[i][j]=1
1.2 给出填表法中表的维度、填表范围和填表顺序。
用数组m[]记录从当前数组下标地窖出发可以挖到的最大地雷数;
维度:一维
范围:[1,n]
顺序:从右往左,即从n到1
1.3 分析该算法的时间和空间复杂度
时间复杂度:O(n^2)
空间复杂度:O(n^2)
2. 你对动态规划算法的理解
动态规划算法:将一个问题分解为许多个子问题,通过求解子问题,组合成最优解,从局部最优推向全局最优。这些子问题其中有些是重叠的,为了多次求解重叠子问题,动态规划常用填表法
与分而治之算法不同的是,这些子问题不是相互独立的;
与贪心算法不同的是,贪心算法考察局部,直接决策,构造最优解。适用于如部分背包问题(可分割),而动态规划用于0-1背包问题(不可分割)
解题步骤:问题结构分析->递推关系建立->自底向上计算->最优方案追踪
3. 说明结对编程情况
我的结对伙伴是许剑瀚,上周是主要由我实现代码,他讲解代码。
先各自完成自己的,后完成的理解先完成的代码。