dynamic programming 从入门到放弃
1. maxsum 最大连续子序列和
用d[i]表示以i结束的子序列和的最大值,状态转移方程为 d[i]=max{d[i-1]+a[i],a[i]},其中d[0]=a[0],然后对d[i] sort 取最大值
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int main() { int N; int a[100]; int d[100]; while(cin>>N) { int n; while(cin>>n) { memset(d,0,sizeof(d)); for(int i=0;i<n;i++) cin>>a[i]; d[0]=a[0]; for(int i=1;i<n;i++) { d[i]=max(d[i-1]+a[i],a[i]); } sort(d,d+n); cout<<d[n-1]<<endl; } } }