¢设数组
b
表示数组a的
i~
j
(0≤
i≤
j≤
n-1
)行,
对应列
元素的
和
。
¢对数组
b
计算最大子段和
,这就将二维动态规划问题转化为一维动态规划问题。
#include<stdio.h> #include<iostream> #include<string.h> int a[1000005]; using namespace std; int main() { int t; cin>>t; while(t--) { int n; cin>>n; int ans=-1; for(int i=1;i<=n;i++) { scanf("%d",&a[i]); } int b=0; for(int i=1;i<=n;i++) { if(b>0) { b+=a[i]; } else { b=a[i]; } if(ans<b) { ans=b; } } printf("%d\n",ans); } return 0; }