专题三 Problem A
2016-05-08 12:40
183 查看
一、题目编号:
1001
二、简单题意:
给出一个序列a[1],a[2],a[3],…,a
,求从该序列中取出连续一个子段,使这个子段的和最大。
三、解题思路形成过程
老师上课讲过这个题,思路很清晰。sum表示当前所算序列的和,maxsum表示序列的最大和。边循环输入边判断,如果当前的和小于0,就放弃这个序列,否则就加上当前数,比较这个当前序列的和,maxsum,当前序列的和大于maxsum则将当前序列的和赋值给maxsum,最终输出maxsum即可。
四、感想
思路老师讲过了,并不难。重点是输出的格式!!感觉代码都对了,但是每次提交都是wa,改了n遍啊,,最终终于发现是输出格式的问题,晕。。
五、AC代码
#include<iostream>
using namespace std;
int main()
{
int t,n,a[100001],x,y,e;
long long maxsum,sum;
int k=1;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(i==1)
{
sum=maxsum=a[i];
e=x=y=i;
}
else
{
if(sum<0)
{
sum=a[i];
e=i;
}
else
sum=sum+a[i];
}
if(sum>maxsum)
{
maxsum=sum;
x=e;
y=i;
}
}
cout<<"Case"<<" "<<k++<<":"<<endl;
cout<<maxsum<<" "<<x<<" "<<y<<endl;
if(t>0)
cout<<endl;
}
return 0;
}
1001
二、简单题意:
给出一个序列a[1],a[2],a[3],…,a
,求从该序列中取出连续一个子段,使这个子段的和最大。
三、解题思路形成过程
老师上课讲过这个题,思路很清晰。sum表示当前所算序列的和,maxsum表示序列的最大和。边循环输入边判断,如果当前的和小于0,就放弃这个序列,否则就加上当前数,比较这个当前序列的和,maxsum,当前序列的和大于maxsum则将当前序列的和赋值给maxsum,最终输出maxsum即可。
四、感想
思路老师讲过了,并不难。重点是输出的格式!!感觉代码都对了,但是每次提交都是wa,改了n遍啊,,最终终于发现是输出格式的问题,晕。。
五、AC代码
#include<iostream>
using namespace std;
int main()
{
int t,n,a[100001],x,y,e;
long long maxsum,sum;
int k=1;
cin>>t;
while(t--)
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
if(i==1)
{
sum=maxsum=a[i];
e=x=y=i;
}
else
{
if(sum<0)
{
sum=a[i];
e=i;
}
else
sum=sum+a[i];
}
if(sum>maxsum)
{
maxsum=sum;
x=e;
y=i;
}
}
cout<<"Case"<<" "<<k++<<":"<<endl;
cout<<maxsum<<" "<<x<<" "<<y<<endl;
if(t>0)
cout<<endl;
}
return 0;
}
相关文章推荐
- Linux下bash中关于日期函数date的格式及各种用法
- HDU 1878 欧拉回路
- 61. Binary Tree Inorder Traversal
- http协议详解[转]
- iptables 详解
- LeetCode 023 Merge k Sorted Lists
- JSTL标签库:Remove标签Catch标签
- C#二十八 数据绑定
- C#二十八 数据绑定
- 我的GitHub
- C#二十八 数据绑定
- 第四次测试作业
- 【JAVA 动态创建风水罗盘 超精华Swing项目方案 - 文章01】
- linux自制守护进程
- 用户密码加密简介
- 《白说》--白岩松
- 解决Gradle DSL method not found: ‘android()’
- d-s证据理论
- 对照Java学习Swift--自动引用计数(Automatic Reference Counting)
- 设计模式(5)--模板方法模式