GESP C++ 真题 · 逐题精解
首页C++五级真题 › 2025年9月 › 第14题

GESP 2025年9月 C++五级 单选题 第14题

C++五级单选题2025年9月第14题

所属知识点:复杂度分析 难度要求:掌握 考频:—

给定 个整数数组 nums ,下 代码找到 个具有最 和的连续 数组,并返回该最 和。则下 说法错 一 面 一 大 子 大 面 误的是( )。
int crossSum(vector<int>& nums, int left, int mid, int right) {
int leftSum = INT_MIN, rightSum = INT_MIN;
int sum = 0;
for (int i = mid; i >= left; i--) {
sum += nums[i];
leftSum = max(leftSum, sum);
}
sum = 0;
for (int i = mid + 1; i <= right; i++) {
sum += nums[i];
rightSum = max(rightSum, sum);
}
return leftSum + rightSum;
}
int helper(vector<int>& nums, int left, int right) {
if (left == right)
return nums[left];
int mid = left + (right - left) / 2;
int leftMax = helper(nums, left, mid);
int rightMax = helper(nums, mid + 1, right);
int crossMax = crossSum(nums, left, mid, right);
return max({leftMax, rightMax, crossMax});
}
int maxSubArray(vector<int>& nums) {
return helper(nums, 0, nums.size() - 1);
}

正确答案:B

题目解析

问错误说法。该求最大子段和用的是分治(crossSum 跨中点),不是贪心,………

完整解析为会员内容二级及以上的逐题精讲需开通 VIP。一级解析全部免费。前往 GESPPASS 解锁

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习