国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

hdu 1024 Max Sum Plus Plus(最大M子段和)

2019-11-06 06:35:45
字體:
來源:轉載
供稿:網友

dp一直就不大會,練練dp 參考題解:http://www.cnblogs.com/kuangbin/archive/2011/08/04/2127085.html http://www.cnblogs.com/dongsheng/archive/2013/05/28/3104629.html 我的理解在注釋里面

//dp[i][j] = max(dp[i][j-1],max(dp[i-1][0]~dp[i-1][j-1]))+num[i]//dp[i][j]表示前j個數字(包含第j個)分成i段的最大值//dp[i][j]只和dp[i][j-1]和dp[i-1][0~j-1]有關,用滾動數組就可以//max(dp[i-1][0]~dp[i][j-1])在計算的時候就可以順便求出來#include <cstdio>#include <cstring>#include <algorithm>const int INF = 99999999;const int MAXN = 1000010;int num[MAXN],dp[MAXN],PRe[MAXN];int main(){ int m,n,temp; while(scanf("%d %d",&m,&n) != EOF) { for(int i = 1; i <= n; ++i) scanf("%d",&num[i]); memset(dp,0,sizeof(dp)); memset(pre,0,sizeof(pre)); for(int i = 1; i <= m; ++i) { temp = -INF; //dp[i][j],當j=i-1時,i-1個元素分成i段顯然是不行的,所以j=i for(int j = i; j <= n; ++j) { dp[j] = std::max(dp[j-1], pre[j-1]) + num[j]; //temp是j-1(包括第j-1個)之前的最大值 pre[j-1] = temp; temp = std::max(temp,dp[j]); } } printf("%d/n",temp); } return 0;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 正蓝旗| 澄城县| 临湘市| 得荣县| 玉树县| 察隅县| 特克斯县| 汨罗市| 财经| 东乡| 综艺| 广灵县| 卢湾区| 清远市| 墨竹工卡县| 寿宁县| 嘉祥县| 隆尧县| 米易县| 沅陵县| 泰顺县| 商城县| 越西县| 黑龙江省| 绥滨县| 新河县| 望奎县| 屏边| 航空| 双峰县| 车险| 安化县| 炉霍县| 黎平县| 防城港市| 定南县| 林周县| 澎湖县| 遂平县| 高安市| 石棉县|