[ACM] hdu 1003 Max Sum(最大子段和模型)
Max Sum
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 135262 Accepted Submission(s): 31311
1000).
position of the sub-sequence. If there are more than one result, output the first one. Output a blank line between two cases.
2
5 6 -1 5 4 -7
7 0 6 -1 1 -6 7 -5
Case 1:
14 1 4 Case 2:
7 1 6
解题思路:
当全部数都为负数时,最大子段和为0.
int MaxSum(int num[],int n)
{
int sum=0,b=0;
int i;
for (i=1;i<=n;i++)
{
if(b>0)
b+=num[i];
else
b=num[i];
if(b>sum)
sum=b;
}
return sum;
}
仅仅求最大和,没有保存位置。
保存位置:start为起 end为末
int start=1,end=1,s=1,e=1;
int sum=0,max=num[1];//不能让max=0
for(int i=1;i<=n;i++)
{
e=i;
sum=sum+num[i];
if(max<sum)
{
max=sum;
start=s;
end=e;
}
if(sum<0)
{
s=i+1;
sum=0;
}
}
本题须要保存起始位置。以下代码假设全是负数,输出最小的那个位置
代码:
#include <iostream>
using namespace std;
const int maxn=100002;
int num[maxn];
int n;
int main()
{
int t;cin>>t;int c=1;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
cin>>num[i];
int start=1,end=1,s=1,e=1;//这里start end一定要赋值为1
int sum=0,max=num[1];//不能让max=0
for(int i=1;i<=n;i++)
{
e=i;
sum=sum+num[i];
if(max<sum)
{
max=sum;
start=s;
end=e;
}
if(sum<0)
{
s=i+1;
sum=0;
}
}
cout<<"Case "<<c++<<":"<<endl;
cout<<max<<" "<<start<<" "<<end<<endl;
if(t)
cout<<endl;
}
return 0;
}
[ACM] hdu 1003 Max Sum(最大子段和模型)的更多相关文章
- HDOJ(HDU).1003 Max Sum (DP)
HDOJ(HDU).1003 Max Sum (DP) 点我挑战题目 算法学习-–动态规划初探 题意分析 给出一段数字序列,求出最大连续子段和.典型的动态规划问题. 用数组a表示存储的数字序列,sum ...
- HDU 1003 Max Sum --- 经典DP
HDU 1003 相关链接 HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...
- hdu 1003 Max Sum (DP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
- HDU 1003 Max Sum【动态规划求最大子序列和详解 】
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- hdu 1003 MAX SUM 简单的dp,测试样例之间输出空行
测试样例之间输出空行,if(t>0) cout<<endl; 这样出最后一组测试样例之外,其它么每组测试样例之后都会输出一个空行. dp[i]表示以a[i]结尾的最大值,则:dp[i ...
- hdu 1003 Max Sum (动态规划)
转载于acm之家http://www.acmerblog.com/hdu-1003-Max-Sum-1258.html Max Sum Time Limit: 2000/1000 MS (Java/O ...
- HDU - 1003 Max Sum 【DP】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1003 题意 给出一个序列 要求找出一个和最大的子序列 思路 O(N)的做法 但是要标记 子序列的头部位 ...
- HDU 1003 Max Sum (动规)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- hdu 1003 Max sum(简单DP)
Max Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Problem ...
随机推荐
- URL组成介绍
1.2. HTTP request ----------------- First, let's consider this HTTP request : Line Contents number 1 ...
- C11 memory_order
概念: 摘录自:http://preshing.com/20120913/acquire-and-release-semantics/ Acquire semantics is a property ...
- Snippet Compiler——代码段编译工具
原文地址:http://www.cnblogs.com/conexpress/archive/2011/07/24/2115308.html 不知道大家在工作中是否遇到过下面的情况:在项目中实现了一段 ...
- linux之SQL语句简明教程---GROUP BY
我们现在回到函数上.记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是要算出每一间店 (Store_Name) 的营业额 (Sales),那怎么办呢?在这个情况下 ...
- 【HDU 4452 Running Rabbits】简单模拟
两只兔子Tom和Jerry在一个n*n的格子区域跑,分别起始于(1,1)和(n,n),有各自的速度speed(格/小时).初始方向dir(E.N.W.S)和左转周期turn(小时/次). 各自每小时往 ...
- CentOS6无法本地登陆,ssh远程登陆没问题
CentOS6无法本地登陆,ssh远程登陆没问题---使用CentOS自带的rsyslog分析调试 Apr 21 14:15:27 raccontroller init: tty (/dev/tty1 ...
- javacript 面向对象
1.对象 使用Object创建对象 var p = new Object(); p.name = 'jason'; p.sayName = function(){ alert(this.name); ...
- PHP出现Notice: unserialize() [function.unserialize]: Error at offset问题的解决方案
有两个原因(据我所知)会导致这个问题: (1) 字符串本身的问题 (2)字符编码的问题. 你unserialize的字符串的编码和文件本身的编码不一致.将文件编码改成和字符串一样的编码.这种问题比较隐 ...
- 具体总结 Hive VS 传统关系型数据库
本文思路,看图说话,一张图,清晰总结二者差别 以下对图中的各条做具体总结 1.查询语言 不做赘述 2.数据存储位置 不做赘述 3.数据格式 Hive:Hive 中未定义专门的数据格式,数据格式能够由用 ...
- RMAN备份之丢失数据文件及控制文件的恢复
About Recovery with a Backup Control FileIf all copies of the current control file are lost or damag ...