#include using namespace std;

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;
给定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。现要求你编写程序计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。各组测试数据特

原文地址: http://www.cveoy.top/t/topic/hQnH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录