Maximum Subsequence Sum最大子列和问题(c语言实现)

题目

在这里插入图片描述

代码

#include <stdio.h>
#define MaxSize 100000
int main(){
	int K;	
	int i;
	int a[MaxSize];
	int flag=0,zero=0;
	int ThisSum=0,MaxSum=0;
	int tempindex=0;
	scanf("%d",&K);			//输入数组长度K
	int first=0,last=K-1;
	for(i=0;i<K;i++){
		scanf("%d",&a[i]);	//输入K个整数
		if(a[i]>0) flag=1;	//有正整数
		if(a[i]==0) zero=1;	//有0(一开始把==写成了=)
	}
	if(flag){
		for(i=0;i<K;i++){
			ThisSum+=a[i];
			if(ThisSum>MaxSum){
				MaxSum=ThisSum;
				first=tempindex;
				last=i;
			}
			if(ThisSum<0){
				ThisSum=0;
				tempindex=i+1;
			}	
		}
		printf("%d %d %d\n",MaxSum,a[first],a[last]);
	}else if(zero){
		printf("0 0 0\n");
	}else{
		printf("0 %d %d\n",a[first],a[last]);
	}
	return 0;
}

结果

在这里插入图片描述

发布了48 篇原创文章 · 获赞 17 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_37551036/article/details/97770661