题解
【基础】相加之和最大,并给出它们的起始位置
1 条题解
-
0
解题思路
把每个位置作为起点,利用取模访问环形数组中的连续四个数。
参考代码
// 先读入题目给出的输入数据。 // 用简单的循环完成题目要求。 #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