给定K个整数组成的序列 N 1 N 2 N K 连续子列被定义为 N i N i+1 N j 其中 1≤i≤j≤K。最大子列和则被定义为所有连续子列元素的和中最大者。例如给定序列 -2 11 -4 13 -5 -2 其连续子列 11 -4 13 有最大的和20。现要求你编写程序计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特
#include
int main() { int K; cin >> K; int nums[K]; for (int i = 0; i < K; i++) { cin >> nums[i]; }
int maxSum = 0; // 最大子列和
int thisSum = 0; // 当前子列和
for (int i = 0; i < K; i++) {
thisSum += nums[i]; // 将当前数字加入当前子列和
if (thisSum > maxSum) { // 如果当前子列和大于最大子列和,则更新最大子列和
maxSum = thisSum;
}
if (thisSum < 0) { // 如果当前子列和为负数,则将当前子列和置为0
thisSum = 0;
}
}
cout << maxSum << endl;
return 0;
原文地址: http://www.cveoy.top/t/topic/hQnH 著作权归作者所有。请勿转载和采集!