hdu Max Sum Plus Plus(dp+滚动数组)

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024

m为段,要深刻理解题意,并没有说是段与段要连接。

题解链接:http://blog.csdn.net/a342374071/article/details/6701544

代码:

 #include <stdio.h>
#include <string.h>
#include <math.h>
#include <limits.h>
#include <algorithm>
#include <iostream>
#include <ctype.h>
#include <iomanip>
#include <queue>
#include <map>
#include <stdlib.h>
using namespace std; #define Max(a,b) ((a)>(b)?(a):(b))
#define M 1000001 int dp[M],t[M],num[M],n,m; int main()
{
while(~scanf("%d %d",&m,&n)){
int i,j;
for(i=;i<=n;i++)
scanf("%d",&num[i]);
memset(dp,,sizeof(dp));
memset(t,,sizeof(t));
int max;
for(i=;i<=m;i++){
max=INT_MIN;
for(j=i;j<=n;j++){
dp[j]=Max(dp[j-],t[j-])+num[j];
t[j-]=max;
max=Max(dp[j],max);
}
t[j-]=max;
}
printf("%d\n",max);
}
}
上一篇:python 序列化,反序列化


下一篇:如何判断一个文本文件内容的编码格式 UTF-8 ? ANSI(GBK)