#GESP202506C6T2. 判断题(每题 2 分,共 20 分)

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

GESP 2025年6月认证 C++ 6级试题

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

第 16 题 构造函数可以被声明为 virtual。 {{ select(16) }}


第 17 题 给定一组字符及其出现的频率,构造出的哈夫曼树是唯一的。 {{ select(17) }}


第 18 题 为了实现一个队列,使其出队操作(pop)的时间复杂度为 O(1)O(1) 并且避免数组删除首元素的 O(n)O(n) 问题,一种常见且有效的方法是使用环形数组,通过调整队首和队尾指针来实现。 {{ select(18) }}


第 19 题 对一棵二叉排序树进行中序遍历,可以得到一个递增的有序序列。 {{ select(19) }}


第 20 题 如果二叉搜索树在连续的插入和删除操作后,所有节点都偏向一侧,导致其退化为类似于链表的结构,这时其查找、插入、删除操作的时间复杂度会从理想情况下的 O(logn)O(\log n) 退化到 O(n)O(n)。 {{ select(20) }}


第 21 题 执行下列代码,my_dog.name 的最终值是 Charlie

class Dog {
public:
    std::string name;
    Dog(std::string str) : name(str) {}
};
int main() {
    Dog my_dog("Buddy");
    my_dog.name = "Charlie";
    return 0;
}

{{ select(21) }}


第 22 题 下列 C++ 代码可以成功编译,并且子类 Child 的实例能通过其成员函数访问父类 Parent 的属性 value

class Parent {
private:
    int value = 100;
};
class Child : public Parent {
public:
    int get_private_val() {
        return value; // 尝试访问父类的私有成员
    }
};

{{ select(22) }}


第 23 题 下列代码中的 tree 向量,表示的是一棵完全二叉树(-1 代表空节点)按照层序遍历的结果。

#include <vector>
std::vector<int> tree = {1, 2, 3, 4, -1, 6, 7};

{{ select(23) }}


第 24 题 在树的深度优先搜索(DFS)中,使用栈作为辅助数据结构以实现"先进后出"的访问顺序。 {{ select(24) }}


第 25 题 下面代码采用动态规划求解零钱兑换问题:给定 nn 种硬币,第 ii 种硬币的面值为 coins[i1]coins[i-1],目标金额为 amtamt,每种硬币可以重复选取,求能够凑出目标金额的最少硬币数量;如果不能凑出目标金额,返回 -1。

int coinChangeDPComp(vector<int> &coins, int amt) {
    int n = coins.size();
    int MAX = amt + 1;
    vector<int> dp(amt + 1, MAX);
    dp[0] = 0;
    for (int i = 1; i <= n; i++) {
        for (int a = 1; a <= amt; a++) {
            if (coins[i - 1] > a)
                dp[a] = dp[a];
            else
                dp[a] = min(dp[a], dp[a - coins[i - 1]] + 1);
        }
    }
    return dp[amt] != MAX ? dp[amt] : -1;
}

{{ select(25) }}