本文主要是介绍浙大PAT 1007题 1007. Maximum Subsequence Sum,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
注意题目要求是输出首尾元素,而不是首尾元素的下标,自己隔了很久敲一下代码,两次有点差别啊!
第一次:
#include<stdio.h>
int main(){
int i,j,K,flag=0;
int sub[10008];
int frst=10008,last,maxs=-1,sum=0;
int temp=0;
scanf("%d",&K);
for(i=0;i<K;i++){
scanf("%d",&sub[i]);
if(sub[i]>=0) flag=1;
}
if(flag==0){
printf("0 %d %d\n",sub[0],sub[K-1]);
}
else{
for(i=0;i<K;i++){
sum=sum+sub[i];
if(sum>maxs){
maxs=sum;
frst=temp;
last=i;
}
else if(sum<0){
sum = 0;
temp=i+1;
}
}
printf("%d %d %d\n",maxs,sub[frst],sub[last]);
}
return 0;
}
第二次:
#include<stdio.h>
int main(){
int i,j,n;
int arr[10005];
int sum=0,imax=-1,fst=0,last=0,mark=0,ftmp=0;
scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%d",&arr[i]);
sum=sum+arr[i];
if(sum>0&&mark==0){
ftmp=arr[i];
mark=1;
}
if(sum>imax){
imax=sum;
fst=ftmp;
last=arr[i];
}
if(sum<0){
sum=0;
mark=0;
}
}
if(imax==-1)
printf("0 %d %d\n",arr[0],arr[n-1]);
else
printf("%d %d %d\n",imax,fst,last);
return 0;
}
这篇关于浙大PAT 1007题 1007. Maximum Subsequence Sum的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!