1 条题解
-
0
#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
- 1165
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 3
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者