在一个数组中找出和最大的连续几个数。(至少包含一个数)
例如:
数组A[] = [−2, 1,−3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6.
输入格式
第一行输入一个不超过1000的整数n。
第二行输入n个整数A[i]。
输出格式
第一行输出一个整数,表示最大的和。
样例输入
3
1 1 -2
样例输出
2
比较简单!但是千万不要忘记初始化dp,这也是我要发上博客的原因
#include<stdio.h>
int main(){
int N;
int n[1000],dp[1000];
int MAX=0;
scanf("%d",&N);
int i,j;
for(i=0;i<N;i++){
scanf("%d",&n[i]);
}
int sum;
dp[0]=n[0];//dp[0]一定要先初始化再用,
MAX=dp[0];
for(i=0;i<N;i++){
dp[i]=n[i];
sum=dp[i];
for(j=i+1;j<N;j++){
sum+=n[j];
if(sum>dp[i])
dp[i]=sum;
}
if(dp[i]>MAX)
MAX=dp[i];
}
printf("%d",MAX);
return 0;
}