以下是 C++ 的一个解法:

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int N;
    cin >> N;

    vector<int> nums(N);
    for (int i = 0; i < N; i++) {
        cin >> nums[i];
    }

    int maxSum = 0;
    int startPos = 0;

    for (int i = 0; i < N; i++) {
        int sum = 0;
        for (int j = 0; j < 4; j++) {
            sum += nums[(i + j) % N];
        }
        if (sum > maxSum) {
            maxSum = sum;
            startPos = i;
        }
    }

    cout << maxSum << ' ' << startPos + 1 << endl;

    return 0;
}

首先,我们读取输入的 N 和连续 N 个数字,并存储在一个 vector 中。

然后,使用两个循环嵌套遍历所有可能的起始位置和四个连续数字的组合。对于每个组合,计算它们的和,并记录最大的和及其对应的起始位置。

最后,输出最大的和及其起始位置。

注意,这里使用了取模运算来处理首尾相连的情况,即当起始位置 i 加上连续数字的索引 j 超过了 N 时,取模 N 来保证索引在合法范围内。起始位置的索引加 1 是因为题目要求的起始位置是从 1 开始计数的。


原文地址: https://www.cveoy.top/t/topic/phi0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录