ZeroJudge D784: 連續元素的和

題目敘述

每筆輸入第一行有一個正整數N,接下來有N行,每行第一個數字M為接下來會有多少個數字要做輸入。要求輸出這M個數的連續最大和。


範例輸入

3

5 1 2 -3 4 5

5 1 2 3 4 5

6 10 -5 7 6 -1 -3

範例輸出

9

15

18


解題思路

使用For迴圈將資料收到一個陣列/Vector中。使用一個For迴圈來設定現在要加總的起點,裡面再放一個For迴圈從上一個For迴圈中的值跑到M結束,每次都將數列中的數字加到一個變數中,並且每次都進行最大值的比對。最後將最大值的變數輸出即可。

解題程式碼如下 (僅供參考):

#include <iostream>
#include <vector>
using namespace std;

int main() {
    cin.sync_with_stdio(0);
    cin.tie(0);
    int N;
    cin >> N;
    for (int i = 0; i<N; i++)
    {
        int M;
        cin >> M;
        vector<int>num;
        for (int j = 0; j<M; j++)
        {
            int tmp;
            cin >> tmp;
            num.push_back(tmp);
        }
        int max = -999;
        for (int j = 0; j<M; j++)
        {
            int sum = 0;
            for (int k = j; k<M; k++)
            {
                sum += num[k];
                if (sum > max) max = sum;
            }
        }
        cout << max << endl;
    }
}

留言

這個網誌中的熱門文章

ZeroJudge M933: 邏輯電路

ZeroJudge A148: You Cannot Pass?!

ZeroJudge M932: 蜜蜂觀察