1007. Maximum Subsequence Sum (25)
2018-03-21 23:59
453 查看
题意:求一个序列的最大子序列和,
思路:
(1)最大子序列和挺好求的,动态法,依次将数读入并加入到sum中,如果sum小于0,则sum=0(因为负数只会使和变小),否则与maxsum比较,如果比maxsum大,则更改maxsum值。
(2)子序列最后一个元素好求,在maxsum值改变时,同时改变最后一个值。难点应该是子序列的第一个数。思路大概是:设置一个标志。ip值的改变主要是出现断续了,也即中间sum的值出现小于0后,出现maxsum和改变时,ip值会改变。
最后附上各个测试点的提示。#include<stdio.h>
int main()
{
int N,i,a[10000];
int Maxsum=-1,sum=0,ip=0,it=-1,tag=0,ipp;
scanf("%d",&N);
for(i=0;i<N;i++){
scanf("%d",&a[i]);
sum+=a[i];
if(sum<0){
tag=0;
sum=0;
}
else{
if(tag==0)ipp=i;
tag=1;
if(sum>Maxsum){ //新的最大和
tag=1;
Maxsum=sum;
it=i;
ip=ipp;
}
}
}
if(it==-1)Maxsum=0,ip=0,it=N-1;
printf("%d %d %d",Maxsum,a[ip],a[it]);
}
思路:
(1)最大子序列和挺好求的,动态法,依次将数读入并加入到sum中,如果sum小于0,则sum=0(因为负数只会使和变小),否则与maxsum比较,如果比maxsum大,则更改maxsum值。
(2)子序列最后一个元素好求,在maxsum值改变时,同时改变最后一个值。难点应该是子序列的第一个数。思路大概是:设置一个标志。ip值的改变主要是出现断续了,也即中间sum的值出现小于0后,出现maxsum和改变时,ip值会改变。
最后附上各个测试点的提示。#include<stdio.h>
int main()
{
int N,i,a[10000];
int Maxsum=-1,sum=0,ip=0,it=-1,tag=0,ipp;
scanf("%d",&N);
for(i=0;i<N;i++){
scanf("%d",&a[i]);
sum+=a[i];
if(sum<0){
tag=0;
sum=0;
}
else{
if(tag==0)ipp=i;
tag=1;
if(sum>Maxsum){ //新的最大和
tag=1;
Maxsum=sum;
it=i;
ip=ipp;
}
}
}
if(it==-1)Maxsum=0,ip=0,it=N-1;
printf("%d %d %d",Maxsum,a[ip],a[it]);
}
相关文章推荐
- PAT甲 1007. Maximum Subsequence Sum (25)
- PAT甲级-1007. Maximum Subsequence Sum (25)最大子序列和
- 1007. Maximum Subsequence Sum (25)
- PAT-A 1007. Maximum Subsequence Sum (25)
- PAT 甲级 1007. Maximum Subsequence Sum (25)
- pat 1007. Maximum Subsequence Sum (25)
- PAT (Advanced Level) Practise - 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 【PAT Advanced Level】1007. Maximum Subsequence Sum (25)
- 【c++】PAT (Advanced Level) 1007. Maximum Subsequence Sum (25)*
- 1007. Maximum Subsequence Sum (25)
- PAT (Advanced Level) 1007. Maximum Subsequence Sum (25) 最大连续子数组,一次遍历,stack辅助
- PAT-A-1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- 1007. Maximum Subsequence Sum (25)
- PAT 1007. Maximum Subsequence Sum (25) 最大子序列和
- [PAT]1007. Maximum Subsequence Sum (25)@Java
- PAT 解题报告 1007. Maximum Subsequence Sum (25)