第3章 动态规划 习题
【+】阅读、掌握课本经典范例代码的实现:(1)矩阵连乘问题;(2)最长公共子序列;(3)最大子段和;(4)凸多边形最优三角剖分;(5)背包问题。
【CH3 - 1】课本.算法分析题3 3-1。
【CH3 - 2】课本.算法分析题3 3-3。(提示:考虑背包问题)
【CH3 - 3】
-
下列算法中通常以自底向上的方式求解最优解的是( )。
A.备忘录法 B.动态规划法 C.贪心法 D.回溯法 -
备忘录方法是( )算法的变形。
A.分治法 B.回溯法 C.贪心法 D.动态规划法 -
下列是动态规划算法基本要素的是( )。
A.定义最优解 B.构造最优解 C.算出最优解 D.子问题重叠性质 -
一个问题可用动态规划算法或贪心算法求解的关键特征是问题的( )。
A.贪心选择性质 B.重叠子问题 C.最优子结构性质 D.定义最优解
【CH3 - 4】简述动态规划法的基本思路。
【CH3 - 5】简述动态规划法与贪心法的异同。
【CH3 - 6】下列算法中哪些属于动态规划算法?
(1)顺序查找算法
(2)直接插入排序算法
(3)简单选择排序算法
(4)二路归并排序算法
【CH3 - 7】某个问题对应的递归模型如下:
f(1)=1
f(2)=2
f(n)=f(n-1)+f(n-2)+…+f(1)+1 当 n>2 时
可以采用如下递归算法求解:
long f(int n)
{
if (n == 1) return 1;
if (n == 2) return 2;
long sum = 1;
for (int i = 1; i <= n - 1; i++)
sum += f(i);
return sum;
}
但其中存在大量的重复计算,请采用备忘录方法求解。
*【CH3 - 8】一个机器人只能向下和向右移动,每次只能移动一步,设计一个算法求它从
(0,0)移动到(m,n)有多少条路径。