首页 > 代码库 > hdu 1024 Max Sum Plus Plus
hdu 1024 Max Sum Plus Plus
http://acm.hdu.edu.cn/showproblem.php?pid=1024
状态转移方程: dp[j]=max(dp[j-1]+a[j],pre[j-1]+a[j]);
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define maxn 1000010 5 #define ll int 6 using namespace std; 7 const int inf=1<<29; 8 9 ll dp[maxn],pre[maxn];10 int a[maxn];11 int n,m;12 ll max2;13 14 ll max1(ll a,ll b)15 {16 if(a>b) return a;17 return b;18 }19 20 int main()21 {22 while(scanf("%d%d",&m,&n)!=EOF)23 {24 for(int i=1; i<=n; i++)25 {26 scanf("%d",&a[i]);27 }28 memset(dp,0,sizeof(dp));29 memset(pre,0,sizeof(pre));30 for(int i=1; i<=m; i++)31 {32 max2=-inf;33 for(int j=i; j<=n; j++)34 {35 dp[j]=max(dp[j-1]+a[j],pre[j-1]+a[j]);36 pre[j-1]=max2;37 max2=max(max2,dp[j]);38 }39 }40 printf("%d\n",max2);41 }42 return 0;43 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。