#include<stdio.h> #include <string.h> #define size 100050 int begin = 0, end = 0; int b = 0, e = 0; //定义成全局变量方便修改 int FindMax(int a[], int n); int main(void) { int num; scanf("%d", &num); int str[size] = { 0 }; for (int i = 0; i < num; i++) { scanf("%d", &str[i]); } int sum=FindMax(str, num); printf("%d %d %d\n", sum,begin,end); return 0; } int FindMax(int a[], int n) { int maxsub=0, thissub = 0; int flag = 0; for (int i = 0; i < n; i++) { if (!b) { b = a[i]; //暂时储存开头 } if (a[i] >= 0) { flag = 1; //判断是否全为0 } thissub += a[i]; if (thissub > maxsub) { e = a[i]; begin = b; end = e; //储存开头结尾 maxsub = thissub; } else if (thissub < 0) { b = 0; //清空 e = 0; thissub = 0; } } if (!flag) { begin = a[0]; end = a[n - 1]; } return maxsub; }
[数据结构]01-复杂度2 Maximum Subsequence Sum
最新推荐文章于 2022-03-22 16:10:47 发布