CCF GESP 2025年6月认证 C++ 6级

判断题
共 10 道 每题 2 分 共计 20 分
第 1 题
构造函数可以被声明为 virtual。
正确
错误
第 2 题
给定一组字符及其出现的频率,构造出的哈夫曼树是唯一的。
正确
错误
第 3 题
为了实现一个队列,使其出队操作(pop)的时间复杂度为 $O(1)$ 并且避免数组删除首元素的 $O(n)$ 问题,一种常见且有效的方法是使用环形数组,通过调整队首和队尾指针来实现。
正确
错误
第 4 题
对一棵二叉排序树进行中序遍历,可以得到一个递增的有序序列。
正确
错误
第 5 题
如果二叉搜索树在连续的插入和删除操作后,所有节点都偏向一侧,导致其退化为类似于链表的结构,这时其查找、插入、删除操作的时间复杂度会从理想情况下的 $O(\log n)$ 退化到 $O(n \log n)$。
正确
错误
第 6 题
执行下列代码, 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;
}
正确
错误
第 7 题
下列 C++ 代码可以成功编译,并且子类 Child 的实例能通过其成员函数访问父类 Parent 的属性 value。
class Parent {
private:
    int value = 100;
};
class Child : public Parent {
public:
    int get_private_val() {
        return value; // 尝试访问父类的私有成员
    }
};
正确
错误
第 8 题
下列代码中的 tree 向量,表示的是一棵完全二叉树(-1 代表空节点)按照层序遍历的结果。
#include <vector>
std::vector<int> tree = {1, 2, 3, 4, -1, 6, 7};
正确
错误
第 9 题
在树的深度优先搜索(DFS)中,使用栈作为辅助数据结构以实现“先进后出”的访问顺序。
正确
错误
第 10 题
下面代码采用动态规划求解零钱兑换问题:给定 $n$ 种硬币,第 $i$ 种硬币的面值为 $coins[i - 1]$,目标金额为 $amt$,每种硬币可以重复选取,求能够凑出目标金额的最少硬币数量;如果不能凑出目标金额,返回 -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;
}
正确
错误
判断题部分已到底了。