#G1126. 客观题

客观题

一、单选题(每题 2 分,共 30 分)

  1. 下列 C\tt C++ 代码的输出结果是( )。

    #include <iostream>
    #include <cmath>
    using namespace std;
    int main() {
        cout << sin(3.1415926 / 2);
        return 0;
    }
    

{{ select(1) }}

  • 00
  • 11
  • 0.50.5
  • 0.70710.7071
  1. 对于如下图的二叉树,说法正确的是( )。

{{ select(2) }}

  • 先序遍历是 132132
  • 中序遍历是 123123
  • 后序遍历是 312312
  • 先序遍历和后序遍历正好是相反的
  1. 已知两个序列 s1={1,3,4,5,6,7,7,8,1}s1= \{1,3,4,5,6,7,7,8,1\}s2={3,5,7,4,8,2,9,5,1}s2= \{3,5,7,4,8,2,9,5,1\},则它们的最长公共子序列是( )。

{{ select(3) }}

  • {3,5,7,8,1}\{3,5,7,8,1\}
  • {3,4,5,7,8}\{3,4,5,7,8\}
  • {5,7,8}\{5,7,8\}
  • {3,5,7,9,1}\{3,5,7,9,1\}
  1. 关于序列 {2,7,1,5,6,4,3,8,9}\{2,7,1,5,6,4,3,8,9\},以下说法错误的是( )。

{{ select(4) }}

  • {2,5,6,8,9}\{2,5,6,8,9\} 是它的最长上升子序列
  • {1,5,6,8,9}\{1,5,6,8,9\} 是它的最长上升子序列
  • {7,5,4,3}\{7,5,4,3\} 是它的最长下降子序列
  • {1,5,6,8,9}\{1,5,6,8,9\} 是它的唯一最长上升子序列
  1. 关于图的深度优先搜索和广度优先搜索,下列说法错误的是( )。

{{ select(5) }}

  • 二叉树是也是一种图
  • 二叉树的前序遍历和后序遍历都是深度优先搜索的一种
  • 深度优先搜索可以从任意根节点开始
  • 二叉树的后序遍历也是广度优先搜索的一种
  1. 对于如下二叉树,下面访问顺序说法错误的是( )。

{{ select(6) }}

  • HDEBFIGCA\tt HDEBFIGCA 不是它的后序遍历序列
  • ABCDEFGHI\tt ABCDEFGHI 是它的广度优先遍历序列
  • ABDHECFGI\tt ABDHECFGI 是它的深度优先遍历序列
  • ABDHECFGI\tt ABDHECFGI 是它的先序遍历序列
  1. 以下哪个方案不能合理解决或缓解哈希表冲突( )。

{{ select(7) }}

  • 丢弃发生冲突的新元素
  • 在每个哈希表项处,使用不同的哈希函数再建立一个哈希表,管理该表项的冲突元素
  • 在每个哈希表项处,建立二叉排序树,管理该表项的冲突元素
  • 使用不同的哈希函数建立额外的哈希表,用来管理所有发生冲突的元素
  1. C\tt C++ 中,关于运算符 &,下面说法正确的是( )。

{{ select(8) }}

  • 2 & 3 的结果是 true\tt true
  • 011 & 111 的结果是 3\tt 3
  • 3 & 6 的结果是 2\tt 2
  • 110 & 101 的结果是 4\tt 4
  1. 下面关于图的说法正确的是( )。

{{ select(9) }}

  • 在无向图中,环是指至少包含三个不同顶点,并且第一个顶点和最后一个顶点是相同的路径
  • 在有向图中,环是指一个顶点经过至少另一个顶点到自身的路径
  • 在有向图中,如果任意两个顶点之间都存在一条边,则这个图一定是强连通图
  • 在有向图中,所有顶点的入度和出度的总和就是图的边数的两倍
  1. 图的存储和遍历算法,下面说法错误的是( )。

{{ select(10) }}

  • 图的深度优先搜索和广度优先搜索对有向图和无向图都适用
  • 图的深度优先搜索和二叉树的先序遍历道理是不一样的
  • 图的深度优先搜索需要借助栈来完成
  • 邻接表中,顶点 viv_i 对应链表中的边结点数目正好是顶点 viv_i 的度
  1. 如下图所示的邻接表结构,表示的是下列哪个选项中的图?( )

{{ select(11) }}

  1. 如下图所示的邻接矩阵(inf\tt inf 表示无穷大),表示的是下列哪个选项中的图?( )

{{ select(12) }}

  1. 下面程序的输出为( )。

    #include <iostream>
    using namespace std;
    int fib(int n) {
        if (n <= 1)
            return n;
        return fib(n - 1) + fib(n - 2);
    }
    int main() {
        cout << fib(6) << endl;
        return 0;
    }
    

{{ select(13) }}

  • 55
  • 88
  • 1313
  • 无法正常结束
  1. 下面 counttriple\tt count_triple 函数的时间复杂度为( )。

    int count_triple(int n) {
        int cnt = 0;
        for (int a = 1; a <= n; a++)
            for (int b = a; a + b <= n; b++) {
                int c = sqrt(a * a + b * b);
                if (a + b + c > n)
                    break;
                if (a * a + b * b == c * c)
                    cnt++;
            }
        return cnt;
    }
    

{{ select(14) }}

  • O(n)O(n)
  • O(n2)O(n^2)
  • O(n3)O(n^3)
  • O(n4)O(n^4)
  1. 下列选项中,哪个可能是下图的深度优先遍历序列( )。

{{ select(15) }}

  • 1,3,7,5,4,2,6,8,91, 3, 7, 5, 4, 2, 6, 8, 9
  • 9,4,2,1,3,5,7,6,89, 4, 2, 1, 3, 5, 7, 6, 8
  • 1,3,4,2,7,6,8,9,51, 3, 4, 2, 7, 6, 8, 9, 5
  • 9,7,6,8,4,2,1,5,39, 7, 6, 8, 4, 2, 1, 5, 3

二、判断题(每题 2 分,共 20 分)

  1. C\tt C++ 语言中,表达式 6 & 5 的结果类型为 int\tt int、值为 11。( )

{{ select(16) }}

  • 正确
  • 错误
  1. 冒泡排序是稳定的排序算法。( )

{{ select(17) }}

  • 正确
  • 错误
  1. 唯一分解定理(算术基本定理)指出,每个大于 11 的自然数都可以唯一地分解成若干个素数的乘积。因此,我们可以很容易的对给定的自然数 nn 进行质因数分解,时间复杂度仅为 O(logn)O(\log n)。( )

{{ select(18) }}

  • 正确
  • 错误
  1. C\tt C++ 语言中,可以为同一个类定义多个构造函数。( )

{{ select(19) }}

  • 正确
  • 错误
  1. 使用 math.h\tt math.hcmath\tt cmath 头文件中的对数函数,表达式 log(128) 的结果类型为 double\tt double、值约为 7.07.0。( )

{{ select(20) }}

  • 正确
  • 错误
  1. 一棵 NN 层的二叉树,至少有 2N12^{N-1} 个节点。( )

{{ select(21) }}

  • 正确
  • 错误
  1. 非连通图不能使用广度优先搜索算法进行遍历。( )

{{ select(22) }}

  • 正确
  • 错误
  1. 现使用有 NN 个表项的哈希表,从 MM 个元素中进行查找。该哈希表为解决哈希函数冲突,为每个表项处建立单链表存储冲突元素。其查找操作的最坏情况时间复杂度为 O(M)O(M)。( )

{{ select(23) }}

  • 正确
  • 错误
  1. 动态规划有递推实现和递归实现,对于很多问题,通过记录子问题的解,两种实现的时间复杂度是相同的。( )

{{ select(24) }}

  • 正确
  • 错误
  1. 泛洪算法的递归方法容易造成溢出,因此大的二维地图算法中,一般不用递归方法。( )

{{ select(25) }}

  • 正确
  • 错误