【动态规划】HDU 1003 Max Sum
2015-07-04 10:49
471 查看
嘛。。。第一篇博客就用这题吧。题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1003
思路的话,并没有什么特别的,这道题使用DP的做法就可以了。
其中dp 数组记录的是dp 的结果,dp[i] 记录前i个数字中以第i个数字结尾的最大和子段,l是记录第i个字段和的起点。
思路的话,并没有什么特别的,这道题使用DP的做法就可以了。
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; int dp[100005]; int l[100005]; //记录第i个字段的起始点 const int INF=0x3f3f3f3f; int main() { int T,N,cont=1; scanf("%d",&T); while(T--) { memset(dp,0,sizeof dp); scanf("%d",&N); for(int i=0;i<N;i++) scanf("%d",&dp[i]); memset(l,0,sizeof l); //数组置零 for(int i=1;i<N;i++) { if(dp[i]+dp[i-1]<dp[i]) { l[i]=i; } else { l[i]=l[i-1]; dp[i]=dp[i]+dp[i-1]; } } int maxn=-INF,ans; for(int i=0;i<N;i++) { if(dp[i]>maxn) { maxn=dp[i]; ans=i; } } //找出最大字段和的下标 printf("Case %d:\n",cont++); printf("%d %d %d\n",maxn,l[ans]+1,ans+1); if(T!=0) printf("\n"); } return 0; }
其中dp 数组记录的是dp 的结果,dp[i] 记录前i个数字中以第i个数字结尾的最大和子段,l是记录第i个字段和的起点。
相关文章推荐
- iOS --- UITableView的优化技巧
- 备忘录
- 最近的题越来越难了,卧槽,搞一上午一题不会,题解也看不懂
- icon font字体图标字库汇总
- Tip:Outlook MAPI客户端连接exchange 2010服务器的session限制
- CABasicAnimation animationWithKeyPath 一些规定的值
- Gson 使用
- 微信公众平台开发- 获取用户基本信息
- Bitmap Font
- 进制表示
- hdu 4630 树状数组 ****
- 微信公众平台开发--OAuth2.0网页授权
- FastMM使用方法总结
- OC特性
- C# 使用SerialPort控件用类及线程实现串口通信
- JavaScript的作用域和变量对象
- php面向对象编程--抽象类
- leetcode 34: Search for a Range
- 四、cocos2d-x的弹窗弹性动画
- DHCP服务安装配置