題目敘述
每筆輸入第一行有一個正整數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;
}
}
留言
張貼留言