01-複雜度1. 最大子列和問題(20)

#include <stdio.h>

int main(void)
{
    int K, i, sum = 0, max = 0;
    printf("Please input K:");
    scanf("%d", &K);
    int a;
    printf("Please enter in K numbers, split by space:\n");
    for(i=0; i<K; ++i)
    {
        scanf("%d", &a);
        if(sum < 0)
            sum = a;
        else
            sum += a;
        if(sum > max)
            max = sum;
    }
    printf("Max: %d", max);
    return 0;
}

給定K個整數組成的序列{ N1, N2, ..., NK },“連續子列”被定義爲{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K。“最大子列和”則被定義爲所有連續子列元素的和中最大者。例如給定序列{ -2, 11, -4, 13, -5, -2 },其連續子列{ 11, -4, 13 }有最大的和20。現要求你編寫程序,計算給定整數序列的最大子列和。

輸入格式:

輸入第1行給出正整數 K (<= 100000);第2行給出K個整數,其間以空格分隔。

輸出格式:

在一行中輸出最大子列和。如果序列中所有整數皆爲負數,則輸出0。

輸入樣例:
6
-2 11 -4 13 -5 -2
輸出樣例:

20


版權聲明:本文爲博主原創,轉載請註明出處。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章