HDU 1003 Max Sum(最大连续子序列和)
来源:互联网 发布:python写一个爬虫 编辑:程序博客网 时间:2024/05/17 08:25
题目链接:Click here~~
题意:
RT。
解题思路:
比较简单的dp,很容易推出状态转移方程:sum[i] = max{sum[i-1]+a[i],a[i]}. (sum[i]记录以a[i]为子序列末端的最大连续和.)
然后用一个值记录更新sum[i]的最大值即可。
即对于a[i]这个数字,我们考虑是否将它选入之前连续的序列。
如果选,状态变为sum[i-1]+a[i] ; 如果不选,则从此开始一个新的序列,故和为a[i]。
理解方程后,代码很好写了。
#include <stdio.h>int main(){ int z,n,max,sum; int a,b,A,B,t; scanf("%d",&z); for(int k=1;k<=z;k++) { scanf("%d",&n); sum = max = -1001; for(int i=1;i<=n;i++) { scanf("%d",&t); if(sum+t < t) sum = t , a = b = i; //a、b记录当前连续子序列的起始、结束位置 else sum += t , ++b; if(max < sum) max = sum , A = a , B = b; } printf("Case %d:\n%d %d %d\n",k,max,A,B); if(k-z) puts(""); }return 0;}
- HDU 1003 Max Sum(最大连续子序列和)
- HDU 1003----Max Sum(最大连续子序列和)
- 【HDU】 1003 Max Sum(最大连续子序列和)
- hdu 1003 MAX SUM(最大连续子序列和)
- HDU 1003 Max Sum 最大连续子序列的和
- HDU 1003 Max Sum(dp,最大连续子序列和)
- HDU 1003 Max Sum(dp,最大连续子序列和)
- HDU 1003 Max Sum 最大连续子序列和
- 【最大连续子序列和dp】hdu 1003 Max Sum
- hdu 1003 Max Sum (最大连续子序列)
- hdu 1003 Max Sum (最大连续子序列)
- HDU 1003 Max Sum(最大连续子序列和 经典DP)
- hdu 题目1003 Max Sum (最大连续子序列和)
- hdu 1003 Max Sum(最大连续子序列和) (学了一下分治)
- HDU 1003 Max Sum(最大连续子段和)
- HDU 1003 Max Sum(最大连续子列和)
- hdu 1003 Max Sum(分而治之||最大连续子序列 dp)
- HDU 1003 Max Sum【最大连续子序列】
- 集群情况下的MSDTC配置。
- mfc-PlaySound
- 十分钟让你明白Objective-C的语法(和Java、C++的对比)
- MTK6573 内核内存配置
- mysql对GIS的支持
- HDU 1003 Max Sum(最大连续子序列和)
- .Net 多线程编程一例
- Linq入门
- 被质疑的时候,你会如何?
- JAVA 手动分页代码
- YQBlog - .NET MVC3博客系统之用户系统实战开发分享【开源】
- windows下配置和使用boost
- jquery的ajax缓存问题
- tomcat设置https访问(http自动跳转到https)