【算法】复习题汇总

练习一

  1. 算法是指解决问题的方法或过程,它包含一系列步骤,用来将输入数据转换成输出结果。(对)
  2. 使用伪代码描述算法具有( )等优点。【ABD】
    A.容易修改
    B.易于转化为程序语言代码
    C.格式统一规范
    D.简单易懂
  3. 算法通常具有( )的性质。【ABCD】
    A.有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限
    B.输出:至少有一个输出
    C.确定性:组成算法的每条指令清晰、无歧义
    D.输入:有零个或多个输入
  4. 程序是算法用某种程序设计语言的具体实现,程序需满足算法的所有性质。(错)
    程序是算法用某种程序设计语言的具体实现,程序可能不满足算法的有限性
  5. 常用的描述算法的形式有( )。【ACD】
    A.程序流程图
    B.机器语言
    C.伪代码
    D.自然语言
  6. 函数f(n)=20log3^n的渐进表达式是( )。【A】
    A.O(n)
    B.0(n^2)
    C.0(1)
    D.0(log(n))
    log3^n=nlog3指数可以提到前面来
  7. 一个算法的优劣由( )决定。【BC】
    A.代码长度
    B.空间复杂度
    C.时间复杂度
    D.使用的编程语言
  8. 如果存在正的常数C和自然数 N 0 N_0 N0,使得当N≥ N 0 N_0 N0时有f(N)≤Cg(N),则称函数f(N)当N充分大时上有界,且g(N)是它的一个上界,记为f(N)=O(g(N)),即f(N)的阶不高于g(N)的阶。(对)
  9. 分析以下代码的时间复杂度:【B】
int func(int n)
{
int i=1, k=0;
while(i<=n) {
k++;
i=i*2;
}
return k;
}

A.O(n^2)
B.O(logn)
C.O(n)
D.O(n/2)
i 每次都是以2倍的形式增加,1、2、4、8…n(等比数列),循环到i=n时,假设循环了k次,则有 2 k = n 2^k=n 2k=n,进入推出 k = l o g 2 n k=log_2n k=log2n

  1. 对于f(n)=n,下列说法正确的是( )。【ABC】
    A.f(n)=O(n^3)
    B.f(n)=O(n)
    C.f(n)=O(n^2)
    D.f(n)=O(1/n)

练习二

  1. 递归函数是指在一个函数体中出现直接或间接调用该函数自身的函数。(对)

  2. 已知f(1)=1,f(n)=f(n-1)+n,那么f(50)的作用是( )。【B】
    A.计算斐波拉契数列的第50个元素的值。
    B.计算1到50的和。
    C.计算1到50的乘积。
    D.计算50个1的和。

  3. 递归的优点包括( )。【BCD】
    A.运行效率高
    B.结构清晰
    C.可读性强
    D.容易用数学归纳法来证明算法的正确性

  4. 在经典的汉诺塔问题中,如果有5个圆盘需要从A柱移至C柱,最少需要移动( )步。【A】
    A.31
    B.32
    C.28
    D.41
    T ( n ) = 2 n − 1 T(n)=2^n-1 T(n)=2n1,n=5时,T(n)=31

  5. 分治法能解决的问题一般具有( )等特征。【ABCD】
    A.该问题缩小到一定程度时可以容易地解决
    B.最优子结构
    C.子问题相互独立
    D.分解出的子问题的解可以合并为原问题的解

  6. 在使用分治法设计算法时,最好使子问题的规模大致相同,即将一个问题分成大小相等的多个子问题的处理方法是行之有效的。(对)

  7. 给定递归公式T(n)=4T(n/2)+O(n),由主定理可以得知T(n)=( )。【C】
    A.O(nlogn)
    B.O(logn)
    C.O(n^2)
    D.O(n)
    使用下面公式求解:T(n)=aT(n/b)+f(n)
    在这里插入图片描述

  8. 已知某楼房共20层,如果采用二分查找,请问最多猜( )次就能猜出任意一个楼层。【B】
    A.3
    B.5
    C.4
    D.6
    二分查找,每次数量数量减半,20——>10——>5——>2——>1——>找到,5个箭头,最多5次

  9. 关于快速排序的时间复杂度,( )是正确的。【BCD】
    A.在平均情况下时间复杂度为O(n^2)
    B.在最坏情况下时间复杂度为O(n^2)
    C.在最好情况下时间复杂度为O(nlogn)
    D.在平均情况下时间复杂度为O(nlogn)
    快速排序在最坏的情况下会退化为冒泡排序

  10. 快速排序是对传统排序算法( )的一种改进。【D】
    A.选择排序
    B.归并排序
    C.插入排序
    D.冒泡排序

练习三

  1. 能够使用动态规划算法来求解的问题通常需要具备两个重要的性质,它们分别是( )。【AB】
    A.最优子结构
    B.重叠子问题
    C.递归调用
    D.贪心选择性质
  2. 关于备忘录法,以下说法正确的是( )。【ACD】
    A.备忘录法为每个解过的子问题建立备忘录以备需要时查看,又称查表法。
    B.备忘录法又称为记忆化搜索,它采用一种自底向上的方式求解问题。
    C.备忘录法可以避免相同子问题的重复求解。
    D.备忘录法的控制结构与直接使用递归方法的控制结构相同。
  3. 字符序列abcde与字符序列abdge的最长公共子序列长度为( ),最长公共子串长度为( )。【A】
    A.4,2
    B.4,6
    C.3,5
    D.4,1
    最长公共子串要求在原字符串中是连续的,而子序列只需要保持相对顺序一致,并不要求连续。
  4. 使用动态规划算法求两条长度分别为m和n的序列的最长公共子序列,其时间复杂度为( )。【C】
    A.O(m^n)
    B.O(n^2)
    C.O(n*m)
    D.O(nlogm)
    动态规划,填表法,填一张 m ∗ n m*n mn的表
  5. 输入数组(-1, 0, 1, -2, 3),它的最大子段和是( )。【A】
    A.3
    B.2
    C.1
    D.4
  6. 序列(1,7,3,4,9,2,3)的最长递增子序列的长度为( )。【A】
    A.4
    B.1
    C.3
    D.2
    1,3,4,9
  7. 使用穷举法求解最长递增子序列的时间复杂度为( )。【B】
    A.O(n^2)
    B.O(n*2^n)
    C.O(n^n)
    D.O(nlogn)
  8. 使用动态规划算法求最大子段和的时间复杂度为( )。【C】
    A.O(nlogn)
    B.O(logn)
    C.O(n)
    D.O(2^n)
  9. 某工厂预计明年有A,B,C,D四个新建项目,每个项目的投资额分别为15,10,12,8(万元),投资收益分别为12,8,9,5(万元),投资总额为30万元,选择项目( )可以使总收益最大。(不允许部分投资某个项目)【ABC】
    A.C
    B.B
    C.D
    D.A
  10. 在使用动态规划算法求解0-1背包问题时,若m[i][j]=m[i+1][j-w[i]]+v[i],说明第i个物品在剩余背包容量为j时可以装入,并且装入比不装入的背包总价值更大,装入后,背包剩余容量减少w[i],价值增加v[i]。(对)

练习四

  1. 能够使用贪心算法求解的问题需具备的基本要素包括( )。【DE】
    A.递归调用
    B.平衡子问题
    C.重复子问题
    D.最优子结构性质
    E.贪心选择性质
  2. 下列关于贪心算法与动态规划算法说法正确的是( )。【AB】
    A.贪心算法与动态规划算法的主要区别是贪心算法要求问题具有贪心选择性质
    B.贪心算法与动态规划算法求解的问题都具备最优子结构性质
    C.贪心算法与动态规划算法求解的问题都具有重复子问题性质
    D.贪心算法与动态规划算法的主要区别是动态规划算法要求问题具有贪心选择性质
  3. 在解决活动安排问题时应首先对活动进行排序,排序的依据是( )。【D】
    A.按照活动结束时间降序排列
    B.按照活动开始时间降序排列
    C.按照活动开始时间升序排列
    D.按照活动结束时间升序排列
  4. 使用贪心算法求解最优装载问题,其时间复杂度为( )。【D】
    A.O(n5n)
    B.O(n2n)
    C.O(n3n)
    D.O(nlogn)
  5. ( )能够使用贪心算法求解。【ABCDE】
    A.最优装载问题
    B.活动安排问题
    C.最小生成树问题
    D.单源最短路径问题
    E.部分背包问题
    F.0-1背包问题
    01背包问题:动态规划、回溯法
  6. 0-1背包问题与部分背包问题的区别在于( )。【AD】
    A.在0-1背包问题中,物品只有装入和不装入两种情况,而部分背包问题允许只装入物品的一部分
    B.若用贪心算法解决部分背包问题,只能得到近似最优解
    C.没有区别,它们的含义相同
    D.若用贪心算法解决0-1背包问题,只能得到近似最优解
  7. 在求解部分背包问题时采用的贪心策略是( )。【B】
    A.选择单位价值下重量最大的物品
    B.选择单位重量下价值最大的物品
    C.选择价值最大的物品
    D.选择重量最轻的物品
  8. Dijkstra算法可用于求解( )。【ABCD】
    A.单源最短路径问题
    B.单终点最短路径问题
    C.单对顶点最短路径问题
    D.每对顶点间最短路径问题
  9. Prim算法适合稀疏图,其时间复杂度只与边的数目有关。(错)
    10.在对Dijkstra算法进行初始化时,如果两个顶点之间没有边,则它们之间的距离为( )。【B】
    A.-1
    B.无穷大
    C.0
    D.无穷小

练习五

  1. 回溯法中的剪枝函数包括( )。 【CD】
    A.虚函数
    B.递归函数
    C.约束函数
    D.限界函数
    E.静态函数
    F.随机数生成函数

  2. 回溯法采用的搜索策略是( )。【C】
    A.广度优先搜索
    B.层次搜索
    C.深度优先搜索
    D.启发式搜索

  3. 回溯法的主要用途包括求问题的所有解、求问题的最优解和求问题的任一解。(对)

  4. 马的遍历问题能否有可行解,与( )有关。【CD】
    A.马的遍历顺序
    B.马的遍历深度
    C.棋盘大小
    D.马的初始位置

  5. 在N皇后问题中,需要将棋盘当做一个二维数组来分析,对于该二维数组,以下说法正确的是( )。【AC】
    A.对于任意一条右斜线上的两个点,它们的横坐标和纵坐标相减的值相同。
    B.对于任意一条右斜线上的两个点,它们的横坐标和纵坐标相加的值相同。
    C.对于任意一条左斜线上的两个点,它们的横坐标和纵坐标相加的值相同。
    D.对于任意一条左斜线上的两个点,它们的横坐标和纵坐标相减的值相同。

  6. 四皇后问题一共有2个可行解,八皇后问题一共有76个可行解。(错)

  7. 用m种颜色给n个顶点着色、且使一条边的两个顶点颜色不同,则对应的解空间树是一棵( )。【C】
    A.高为m的n叉树
    B.高为n的n叉树
    C.高为n的m叉树
    D.高为m的m叉树

  8. 任何一张地图只用( )种颜色就能使具有共同边界的国家着上不同的颜色。【D】
    A.2
    B.6
    C.3
    D.4

  9. 使用回溯法求解0-1背包问题时,计算右子树上界的方法是通过贪心策略求得上界,即将剩余物品依其单位重量价值排序,然后依次装入物品,直至装不下时,再装入该物品的一部分而装满背包,此时得到的价值就是右子树中解的上界。(对)

  10. 关于使用回溯法求解0-1背包问题,以下说法正确的是( )。【BC】
    A.使用约束函数剪去不合理的右子树(不装该物品)。
    B.使用约束函数剪去不合理的左子树(装该物品)。
    C.使用限界函数剪去得不到更优解的右子树(不装该物品)。
    D.使用限界函数剪去得不到更优解的左子树(装该物品)。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值