迴圈陣列最大子段和
N個整陣列成的迴圈序列a[1],a[2],a[3],…,a[n],求該序列如a[i]+a[i+1]+…+a[j]的連續的子段和的最大值(迴圈序列是指n個數圍成一個圈,因此需要考慮a[n-1],a[n],a[1],a[2]這樣的序列)。當所給的整數均為負數時和為0。
例如:-2,11,-4,13,-5,-2,和最大的子段為:11,-4,13。和為20。
Input
第1行:整數序列的長度N(2 <= N <= 50000) 第2 - N+1行:N個整數 (-10^9 <= S[i] <= 10^9)
Output
輸出迴圈陣列的最大子段和。
Input示例
6 -2 11 -4 13 -5 -2
Output示例
20
#include <iostream>
#include <algorithm>
using namespace std;
int input[50000];
long long int maxSum(int n)
{
long long int result = input[0];
long long int sum = input[0];
for (int i = 1; i < n; i++)
{
if (sum < 0)
{
sum = input[i];
}
else
{
sum += input[i];
}
if (sum > result)
{
result = sum;
}
}
return result;
}
long long int minSum(int n)
{
long long int result = input[0];
long long int sum = input[0];
for (int i = 1; i < n; i++)
{
if (sum > 0)
{
sum = input[i];
}
else
{
sum += input[i];
}
if (sum < result)
{
result = sum;
}
}
return result;
}
long long int totalSum(int n)
{
long long int result = 0;
for (int i = 0; i < n; i++)
{
result += input[i];
}
return result;
}
int main(int argc, const char * argv[])
{
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> input[i];
}
long long sum1 = maxSum(n);
long long sum2 = totalSum(n) - minSum(n);
cout << max(sum1, sum2) << endl;
return 0;
}
相關文章
- 最大連續子陣列和(最大子段和)陣列
- 陣列迴圈陣列
- while迴圈和do迴圈、緩衝區、一維陣列While陣列
- 53. 最大子陣列和陣列
- 求二維陣列中最大子陣列的和陣列
- LeetCode53. 最大子陣列和LeetCode陣列
- [Python手撕]最大子陣列和Python陣列
- for..in 迴圈陣列需注意陣列
- 【力扣】最大子陣列和(貪心)力扣陣列
- js陣列迴圈方法對比JS陣列
- 靜態佇列,迴圈陣列實現佇列陣列
- 迴圈陣列最大欄位和(51Nod-1050)陣列
- ASP.NET Razor – VB 迴圈和陣列簡介ASP.NET陣列
- 陣列常見的遍歷迴圈方法、陣列的迴圈遍歷的效率對比陣列
- 佇列 和 迴圈佇列佇列
- 手擼MQ訊息佇列——迴圈陣列MQ佇列陣列
- JS陣列迴圈的效能和效率分析(for、while、forEach、map、for of)JS陣列While
- ASP.NET Razor – C# 迴圈和陣列簡介ASP.NETC#陣列
- 【DP】乘積最大子陣列陣列
- php 迴圈陣列引用傳值改變陣列本身的值PHP陣列
- Go_ if else語句 ,,迴圈,,switch,,陣列Go陣列
- 457. 環形陣列是否存在迴圈陣列
- 【刷題筆記】LeetCode-53 最大子陣列和筆記LeetCode陣列
- 習題8-3 陣列迴圈右移 及 練習7-8 方陣迴圈右移陣列
- 【51nod】最大子段和
- 順序表應用7:最大子段和之分治遞迴法遞迴
- for迴圈無法刪除陣列所有指定元素陣列
- [PAT B] 1008 陣列元素迴圈右移問題陣列
- 1008 陣列元素迴圈右移問題 (20分)陣列
- 在迴圈陣列時使用splice()方法刪除陣列遇到的問題陣列
- 最大子陣列問題(Maximum subarray problem)陣列
- 53_Maximum Subarray-最大子陣列陣列
- 【Leetcode】152.乘積最大子陣列LeetCode陣列
- LeetCode-152-乘積最大子陣列LeetCode陣列
- JS陣列遍歷和獲取陣列最值JS陣列
- 山海經:線段樹維護最大子段和
- 大資料之JAVA基礎(五):迴圈和陣列方法練習大資料Java陣列
- 最大子列和問題
- 1008 陣列元素迴圈右移問題 (20 分)java陣列Java