1 条题解

  • 0
    @ 2026-1-27 19:00:34
    #include<bits/stdc++.h> 
    using namespace std;     
    
    int n;                   // [1] n-输入的数组长度(环形数组的元素个数)
    int arr[200];            // [2] arr数组-存储环形数组的元素
    
    int main(){
        cin>>n;  // [3] 读取数组长度n
        for(int i=0;i<n;i++) cin>>arr[i];  // [4] 读取n个元素存入arr数组(下标从0开始)
        
        // 初始化最大和与对应的起始位置
        int max_sum=0,max_v=0;  // [5] max_sum-记录最大的4数之和;max_v-记录该最大和对应的起始位置(题目要求输出1-based位置)
        
        // 遍历每个可能的起始位置(环形数组中每个位置都可以作为起始点)
        for(int i=0;i<n;i++){
            int sum=0,x=i;  // [6] sum-计算当前起始位置i的4数之和;x-当前遍历的数组下标,初始为i
            // 累加连续的4个元素(处理环形逻辑)
            for(int j=1;j<=4;j++){
                sum+=arr[x++];  // [7] 累加当前元素,x向后移动一位
                if(x>=n) x=0;  // [8] 如果x超出数组范围(环形特性),重置为0回到数组开头
            }
            // 更新最大和与起始位置
            if(sum>max_sum){
                max_sum=sum;  // [9] 发现更大的和,更新max_sum
                max_v=i+1;    // [10] 记录起始位置(转换为1-based,题目要求输出从1开始的位置)
            }
        }
        
        // 输出结果
        cout<<max_sum<<endl<<max_v;  // [11] 第一行输出最大和,第二行输出起始位置
        return 0;                  
    }
    
    • 1

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

    信息

    ID
    1191
    时间
    1000ms
    内存
    256MiB
    难度
    3
    标签
    递交数
    1
    已通过
    1
    上传者