HOJ 1003 Max Sum 解题报告
好几年没有做ACM了,感觉忘得差不多了,这个做着做着就打瞌睡了!言归正传,下面是我的解题思路:
首先的话,我们可以画一个函数图,以输入数组的下标为X轴,以数组的和为Y轴,当数组和小于零时,我们使用备用的数组和sum2和备用的最小下标min2,并用flag进行标记。具体实现可以参考代码。
需要注意的地方有:当数组所有值都小于零时,我们在此进行特别的处理,找出最小的负数和相应的下标,然后在输出时和非全负数组的结果分开。(第一次提交的时候,没有考虑到全负的情况,WA了一次)
#include <stdio.h> int main()
{
int n,num,i,c;
int min1,min2,max,sum1,sum2,temp,flag;
//freopen("in.txt","r",stdin);
//freopen("out.txt","w",stdout);
scanf("%d",&n);
for(c=1; c<=n; c++)
{
scanf("%d",&num);
flag = sum1 = sum2 = 0;
min1 = min2 = max = 1;
int m, s, f=0;
for(i=1; i <= num; i++)
{
scanf("%d",&temp);
if(temp >= 0)f=1; if(1 == i){
m = temp;
s = i;
}
else if(0 == f && temp > m){
m = temp;
s = i;
} if(flag) //if sum2 < 0, then execute follow action.
{
if(temp >= 0)
{
sum2 = temp;
min2 = i;
flag = 0;
}
else{
continue;
}
}else{
sum2 += temp;
} if(sum2 >= sum1)
{
max = i;
sum1 = sum2;
min1 = min2; }
else if(sum2 < 0)
{
flag = 1;
}
}
printf("Case %d:\n",c);
if(1 == f){
printf("%d %d %d\n",sum1,min1,max);
}
else{
printf("%d %d %d\n",m,s,s);
}
if(c < n)printf("\n");
} return 0;
}
HOJ 1003 Max Sum 解题报告的更多相关文章
- HDU 1003 Max Sum 解题报告
		
题目大意:求一串数字中,几个连续数字加起来最大值,并确定起始和最末的位置. 思路:这是一题DP题,但是可以用尺取法来做.我一开始不会,也是看了某大神的代码,然后有人告诉我这是尺取法,现在会了. //尺 ...
 - Winter-1-D Max Sum 解题报告及测试数据
		
Time Limit:1000MS Memory Limit:32768KB Description Given a sequence a[1],a[2],a[3]......a[n], your j ...
 - LeetCode 1 Two Sum 解题报告
		
LeetCode 1 Two Sum 解题报告 偶然间听见leetcode这个平台,这里面题量也不是很多200多题,打算平时有空在研究生期间就刷完,跟跟多的练习算法的人进行交流思想,一定的ACM算法积 ...
 - HDU 1003 Max Sum --- 经典DP
		
HDU 1003 相关链接 HDU 1231题解 题目大意:给定序列个数n及n个数,求该序列的最大连续子序列的和,要求输出最大连续子序列的和以及子序列的首位位置 解题思路:经典DP,可以定义 ...
 - LeetCode 2 Add Two Sum 解题报告
		
LeetCode 2 Add Two Sum 解题报告 LeetCode第二题 Add Two Sum 首先我们看题目要求: You are given two linked lists repres ...
 - HDOJ(HDU).1003 Max Sum (DP)
		
HDOJ(HDU).1003 Max Sum (DP) 点我挑战题目 算法学习-–动态规划初探 题意分析 给出一段数字序列,求出最大连续子段和.典型的动态规划问题. 用数组a表示存储的数字序列,sum ...
 - hdu 1003 Max Sum (DP)
		
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1003 Max Sum Time Limit: 2000/1000 MS (Java/Others) ...
 - 杭电1003 Max Sum 【连续子序列求最大和】
		
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1003 题目意思: 即给出一串数据,求连续的子序列的最大和 解题思路: 因为我们很容易想到用一个max ...
 - hdu 1003  MAX SUM 简单的dp,测试样例之间输出空行
		
测试样例之间输出空行,if(t>0) cout<<endl; 这样出最后一组测试样例之外,其它么每组测试样例之后都会输出一个空行. dp[i]表示以a[i]结尾的最大值,则:dp[i ...
 
随机推荐
- MusiCode 批量下载指定歌手的所有专辑(已解除验证码限制)
			
一直想把喜欢的歌手的专辑全都归类并下载下来,由于那专辑数量实在太多了,再加上最近开始学习python,就想着何不用python写个脚本把下载过程自动化呢?所以就花了点时间写了这么个东西,分享给有需要的 ...
 - zf-关于触摸屏子系统(查询机)的页面
			
这个页面 一般是 touch/index.jsp 这个要记下来. -- 今天有个任务 是把查询机的UI页面给换掉
 - QT中LineEdit、TextEdit 、PlainTextEdit 三个控件的区别
			
QLineEdit是单行文本输入,一般用于用户名.密码等少量文本交互地方.QTextEdit用于多行文本,也可以显示HTML格式文本.QPlainTextEdit与QTextEdit很像,但它多用于需 ...
 - GridView绑定DataKeyNames以及如何取这些值
			
DataKeyNames='FID' //前台绑定一个值GridView1.DataKeys[e.Row.RowIndex].Value.ToString;-------------------- ...
 - Quartz 2D  初步
			
转载自:http://www.cofcool.net/development/2015/06/17/ios-study-note-six-Quartz2D/ Quartz 2D是一个二维绘图引擎,同时 ...
 - 新手常见的python报错及解决方案
			
此篇文章整理新手编写代码常见的一些错误,有些错误是粗心的错误,但对于新手而已,会折腾很长时间才搞定,所以在此总结下我遇到的一些问题.希望帮助到刚入门的朋友们.后续会不断补充. 目录 1.NameErr ...
 - 方便android开发网站:
			
可以通过输入包名或者Google Play地址消灾google市场的应用 http://apps.evozi.com/apk-downloader/ 16进制转常用的10进制 http://www.b ...
 - VHD容量调整的方法(保存原有vhd)
			
VHD容量调整的方法(保存原有vhd)特别对于RAMOS的VHD,调整VHD容量的办法:1.在WIN7或者7PE中,右击我的电脑→管理→磁盘管理,挂载原始VHD文件,然后新建一个VHD文件,初始化,格 ...
 - 要你的祝福.lrc
			
要你的祝福(电影<我是路人甲>插曲 试听版) - 李潇潇 午夜的温度慢慢起舞 穿梭的人潮有些荒芜 开始欢呼 开始麻木 谁被谁在安抚 落单的幸福变得模糊 孤单的城市独自起舞 也许满足 也许糊 ...
 - Using StructureMap DI and Generic Repository
			
In this post, i will show how to use generic repository and dependency injection using structuremap. ...