问问这个怎么做😭😭c++的题

img

用的vector及引用,需要你自己改写成用指针形式。

/**
 * 遍历数组, 以每个元素为启点, 求相邻4个元素和值, 记录最大和值及其起始元素的索引
 */
int getMaxSum(vector<int>& vec, vector<int>& res) {
    int max_sum = 0; // 最大和值
    int max_idx = 0; // 最大和值的第一个元素索引
    // 不足4个数
    if (vec.size() < 4) {
        for (auto &e : vec) {
            max_sum += e;
            res.push_back(e);
        }
        return max_sum;
    }
    // 4个数以上

    // 初始最大和值
    max_sum = vec[0] + vec[1] + vec[2] + vec[3];

    for (int i = 1; i < vec.size(); ++i) {
        int sum = vec[i] + vec[(i + 1) % vec.size()] + vec[(i + 2) % vec.size()] + vec[(i + 3) % vec.size()];
        
        if (max_sum < sum) {
            max_sum = max(sum, max_sum);
            max_idx = i;
        }
    }

    for (int i = 0; i < 4; i++) {
        res.push_back(vec[(max_idx + i) % vec.size()]);
    }

    return max_sum;
}

int main()
{
    vector<int> a = { 8, 5, 13,15,3,11,6,7,22,10 };
    vector<int> b;
    int sum = getMaxSum(a, b);
    cout << "最大的和值是:" << sum << endl;

    cout << "参与求和的4个数是: ";
    for (auto &e : b) {
        cout << e << " ";
    }
    cout << endl;
    return 0;
}