[程式設計題] 連續最大和
阿新 • • 發佈:2019-02-02
一個數組有 N 個元素,求連續子陣列的最大和。 例如:[-1,2,1],和最大的連續子陣列為[2,1],其和為 3
輸入描述:
輸入為兩行。 第一行一個整數n(1 <= n <= 100000),表示一共有n個元素 第二行為n個數,即每個元素,每個整數都在32位int範圍內。以空格分隔。
輸出描述:
所有連續子陣列中和最大的值。
輸入例子:
3 -1 2 1
輸出例子:
3
#include <iostream>
using namespace std;
int main()
{
int n;
while(cin>>n)
{
int data[100001];
int i,j;
for(i=0;i<n;i++)
cin>>data[i];
int dp[100001]={0};
dp[0]=data[0];
int max=dp[0];
for(i=1;i<n;i++)
{
dp[i]=data[i];
if(dp[i-1]+data[i]>dp[i])
dp[i]=dp[i-1]+data[i];
if(max<dp[i])
max=dp[i];
}
cout<<max<<endl;
}
}