#JC1059. 动态规划基础
动态规划基础
一、单项选择题(每题2分,共20分)
1、动态规划当中,把大问题拆解成若干小问题,保存子问题解避免重复计算,这个特性叫做?() {{ select(1) }}
- 无后效性
- 重叠子问题
- 最优子结构
- 贪心策略
2、下面不属于动态规划三要素的是?() {{ select(2) }}
- 最优子结构
- 无后效性
- 递归回溯
- 重叠子问题
3、台阶走法,一次走1阶或者2阶,到达第n阶的状态转移方程是?() {{ select(3) }}
dp[n]=dp[n‑1]+dp[n‑2]dp[n]=dp[n‑1]*2dp[n]=dp[n‑2]+2dp[n]=n
4、网格只能向右、向下行走,dp[i][j]代表走到(i,j)的方案数,状态转移方程正确的是?() {{ select(4) }}
dp[i][j] = dp[i‑1][j] - dp[i][j‑1]dp[i][j] = dp[i‑1][j] * dp[i][j‑1]dp[i][j] = dp[i‑1][j]dp[i][j] = dp[i‑1][j] + dp[i][j‑1]
5、挖矿(花生地)题目,只能向右向下,求路径最大和,dp[i][j]代表到达该格子最大矿石数,转移方程为?() {{ select(5) }}
dp[i][j] = min(dp[i‑1][j], dp[i][j‑1]) + mp[i][j]dp[i][j] = max(dp[i‑1][j], dp[i][j‑1]) + mp[i][j]dp[i][j] = dp[i‑1][j] + dp[i][j‑1]dp[i][j] = max(dp[i‑1][j], dp[i][j‑1])
6、硬币问题,dp[i]表示凑i元需要最少硬币数,dp[i]正确写法是?() {{ select(6) }}
dp[i] = max(dp[i], dp[i‑coin]+1)dp[i] = dp[i‑coin]dp[i] = min(dp[i], dp[i‑coin]+1)dp[i] = dp[i‑coin]‑1
7、硬币问题初始化,dp[0]应当赋值为?() {{ select(7) }}
- 极大值
- 0
- 1
- -1
8、关于无后效性,下面描述正确的是?() {{ select(8) }}
- 当前状态求解,需要用到全部历史所有状态
- 子问题会被重复多次调用
- 子问题的最优解构成全局最优解
- 当前状态只依赖上一步状态,更早的状态不再需要
9、memset函数对于int数组,下面说法正确的是?() {{ select(9) }}
- memset可以直接把int数组赋值为1000000
- memset按字节赋值,不适合直接给int赋大数值
- memset只能用于char数组
- memset可以用来求状态转移方程
10、方格取数CSP‑J题,数组f[i][j][0]的含义是?()
{{ select(10) }}
- 到达(i,j),向下走的累加最大值
- 到达(i,j),向上走的累加最大值
- (i,j)格子原始数值
- 该点访问标记
二、判断题(每题2分,共10分)
11、动态规划求解步骤:确定状态转移方程、初始化状态、执行状态转移。() {{ select(11) }}
- 正确
- 错误
12、最优子结构含义:大问题的最优解由各个子问题最优解构成。() {{ select(12) }}
- 正确
- 错误
13、挖矿花生地,dp数组第0行第0列需要初始化为极大负数。() {{ select(13) }}
- 正确
- 错误
14、硬币问题,dp数组整体初始要设置为极大值,dp[0]=0。() {{ select(14) }}
- 正确
- 错误
15、下棋博弈问题具备无后效性,可以直接使用动态规划求解。() {{ select(15) }}
- 正确
- 错误