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

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

hdu 1024 Max Sum Plus Plus

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

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;}
上一篇:PAT 1008

下一篇:bzoj4034

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 双峰县| 蒙自县| 张北县| 临湘市| 本溪市| 米易县| 香河县| 丽水市| 苏尼特左旗| 宿迁市| 北辰区| 阿坝县| 岚皋县| 突泉县| 昂仁县| 会泽县| 石阡县| 阳信县| 揭西县| 霍邱县| 区。| 遂平县| 长治市| 祁东县| 平顺县| 龙泉市| 九江市| 云安县| 通江县| 同德县| 苏尼特左旗| 霍城县| 灵丘县| 集安市| 桐乡市| 邯郸县| 保山市| 沭阳县| 岳阳县| 论坛| 华蓥市|