使用C++编写程序计算数组中连续元素相加后最大的值是多少?
时间: 2024-04-17 12:27:21 浏览: 16
当然,以下是使用C++编写的程序来计算数组中连续元素相加后的最大值:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
int maxSubarraySum(const std::vector<int>& arr) {
int maxSum = arr[0];
int currentSum = arr[0];
for (size_t i = 1; i < arr.size(); i++) {
currentSum = std::max(arr[i], currentSum + arr[i]);
maxSum = std::max(maxSum, currentSum);
}
return maxSum;
}
int main() {
std::vector<int> arr = {1, -2, 3, 10, -4, 7, 2, -5};
int result = maxSubarraySum(arr);
std::cout << result << std::endl; // 输出 18
return 0;
}
```
在这个程序中,`maxSubarraySum` 函数使用动态规划的思想,通过迭代数组元素,不断更新当前连续子数组的最大和(`currentSum`),并与全局最大和(`maxSum`)进行比较。最后输出 `maxSum` 即为数组中连续元素相加后的最大值。
相关问题
用c++编写数组求和的程序
好的,下面是用 C 编写数组求和的程序:
```
#include <stdio.h>
int main() {
int arr[] = {1, 2, 3, 4, 5};
int sum = 0;
int i;
for (i = 0; i < sizeof(arr)/sizeof(int); i++) {
sum += arr[i];
}
printf("数组求和结果为:%d\n", sum);
return 0;
}
```
这是一个简单的程序示例,将一个包含 5 个整数的数组中的元素相加并输出结果。
c++编写程序,输入 5 个数给数组 a,再输入 5 个数给数组 b,将两个数组 对应的元素相加的和赋值给数组 c,输出数组 c。考虑整型、小数等不同类型数 组的加法。
以下是C++的代码实现:
```cpp
#include <iostream>
using namespace std;
template<typename T>
void add(T c[], T a[], T b[], int size = 5) {
for(int i = 0; i < size; i++) {
c[i] = a[i] + b[i];
}
}
int main() {
int a1[5], b1[5], c1[5];
double a2[5], b2[5], c2[5];
cout << "请输入5个整数,用空格分隔:" << endl;
for(int i = 0; i < 5; i++) {
cin >> a1[i];
}
cout << "请输入5个整数,用空格分隔:" << endl;
for(int i = 0; i < 5; i++) {
cin >> b1[i];
}
cout << "整数数组相加的结果为:" << endl;
add(c1, a1, b1);
for(int i = 0; i < 5; i++) {
cout << c1[i] << " ";
}
cout << endl;
cout << "请输入5个小数,用空格分隔:" << endl;
for(int i = 0; i < 5; i++) {
cin >> a2[i];
}
cout << "请输入5个小数,用空格分隔:" << endl;
for(int i = 0; i < 5; i++) {
cin >> b2[i];
}
cout << "小数数组相加的结果为:" << endl;
add(c2, a2, b2);
for(int i = 0; i < 5; i++) {
cout << c2[i] << " ";
}
cout << endl;
return 0;
}
```
可以看到,我们使用了一个模板函数add,这样就可以方便地处理整型和小数型数组的加法。在主函数中,我们分别输入整型数组a1和b1,小数型数组a2和b2,然后调用add函数求出它们的和c1和c2,并输出结果。