用c++和c,写出代码,要求给定一个序列a[1],a[2]...a[n]和一个整数k,请找出一个长度正好为k的区间,使得区间所有数的和最大
时间: 2023-12-03 17:39:29 浏览: 37
以下是C++和C语言的代码,实现给定一个序列a,a...a[n]和一个整数k,找出一个长度正好为k的区间,使得区间所有数的和最大:
C++代码:
```cpp
#include <iostream>
using namespace std;
int maxSum(int a[], int n, int k) {
int maxSum = 0;
for (int i = 0; i <= n - k; i++) {
int curSum = 0;
for (int j = i; j < i + k; j++) {
curSum += a[j];
}
if (curSum > maxSum) {
maxSum = curSum;
}
}
return maxSum;
}
int main() {
int a[] = {1, -2, 3, 10, -4, 7, 2, -5};
int n = sizeof(a) / sizeof(a[0]);
int k = 4;
int max = maxSum(a, n, k);
cout << "长度为" << k << "的区间所有数的和最大为:" << max << endl;
return 0;
}
```
C语言代码:
```c
#include <stdio.h>
int maxSum(int a[], int n, int k) {
int maxSum = 0;
for (int i = 0; i <= n - k; i++) {
int curSum = 0;
for (int j = i; j < i + k; j++) {
curSum += a[j];
}
if (curSum > maxSum) {
maxSum = curSum;
}
}
return maxSum;
}
int main() {
int a[] = {1, -2, 3, 10, -4, 7, 2, -5};
int n = sizeof(a) / sizeof(a[0]);
int k = 4;
int max = maxSum(a, n, k);
printf("长度为%d的区间所有数的和最大为:%d\n", k, max);
return 0;
}
```