填空:

1、【算法】由有限条指令构成,每条指令规定了计算机所要执行的有限次运算或者操作。

2、一个最优决策序列的任何子序列本身一定是相对于子序列的【初始和结束状态】的最优的决策序列.

3、贪心算法的证明通常需要证明该算法能够找到问题的最优解。除了数学归纳法之外,还有【交换论证法/反证法】证明方法。

4、分治算法通常都是递归算法,这种算法的时间复杂度分析通常需要求解【递推方程】。

5、可行流f是最大流的充分必要条件是不存在关于f的s-t【增广链】。

选择:

无。

大题:

1、归并排序

没啥好说的。

2、田忌赛马

二千多年前的战国时期,齐威王与大将田忌赛马。双方约定每人各出300匹马,并且在
上、中、下三个等级中各选一匹进行比赛,由于齐威王每个等级的马都比田忌的马略强,
比赛的结果可想而知。现在双方各n匹马,依次派出一匹马进行比赛,每一轮获胜的一方
将从输的一方得到200银币,平局则不用出钱,田忌已知所有马的速度值并可以安排出场
顺序,问他如何安排比赛获得的银币最多。

参考答案:

3、解空间树绘制、最优解,最优值,含义解释

4、动态规划问题-小民走迷宫

int minPathForDP(){
    // 边界情况
    dp[0][0] = a[0][0];
    for(int j = 1; j <n; j++) {
        dp[0][j] = dp[0][j-1] + a[0][j];
    }
    for(int i = 1; i <m; i++) {
        dp[i][0] = dp[i-1][0] + a[i][0];
    }
    
    for(int i = 1; i <m; i++) {
        for(int j = 1; j <n; j++) {
            dp[i][j] = a[i][j] + min(dp[i-1][j], dp[i][j-1]);
        }
    }
    return dp[3][3];
}