top1编程
← 返回题目
题解

【基础】相加之和最大,并给出它们的起始位置

1 条题解

  • 0
    @ 2026-7-30 1:37:36

    解题思路

    把每个位置作为起点,利用取模访问环形数组中的连续四个数。

    参考代码

    // 先读入题目给出的输入数据。
    // 用简单的循环完成题目要求。
    #include <iostream>
    using namespace std;
    
    int main() {
        int n, a[25];
        cin >> n;
        for (int i = 0; i < n; i++) cin >> a[i];
        int mx = -1, pos = 1;
        for (int i = 0; i < n; i++) {
            int sum = 0;
            for (int j = 0; j < 4; j++) {
                // 超过数组末尾时,从数组开头继续取数。
                sum += a[(i + j) % n];
            }
            if (sum > mx) {
                mx = sum;
                pos = i + 1;
            }
        }
        cout << mx << endl << pos << endl;
        return 0;
    }
    

    复杂度分析

    代码只使用了简单变量、数组、循环和判断。时间复杂度根据题目的枚举或扫描过程计算,额外空间主要是输入数组,空间复杂度为 O(n)。

    • 1