题解 | #最大序列和#
最大序列和
https://www.nowcoder.com/practice/df219d60a7af4171a981ef56bd597f7b
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int MAX=1000000; long long dp[MAX]; long long arr[MAX]; int main() { int N; while(scanf("%d",&N)!=EOF) { long long result; for(int i=0;i<N;i++) { scanf("%lld",&arr[i]);//自己定义的数据类型,自然要对应使用 } dp[0]=arr[0]; for(int i=1;i<N;i++) { dp[i]=max(dp[i-1]+arr[i],arr[i]);//问题在于使用到当前位置的最大值,是之前的最大值再加上当前的位置的arr值,还是直接使用当前位置的值作为最大值。 } result=dp[0]; for(int i=1;i<N;i++) { if(dp[i]>result) { result=dp[i]; } } printf("%lld\n",result); } }