实例1.1 最大子列和问题 (20分)
AC代码
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define MaxSize 100010
using namespace std;
int arr[MaxSize];
int MCAS(int arr[], int n){
int Max = arr[0];
int sum = arr[0];
for (int i = 1; i < n; i++){
sum = max(sum + arr[i], arr[i]);
Max = max(sum, Max);
}
return Max;
}
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
printf("%d\n", MCAS(arr, n));
return 0;
}
本文介绍了一个解决最大子列和问题的经典算法实现。通过分析数组中的连续子列,找出具有最大和的子列,并返回该子列的和。使用了动态规划的思想,通过比较当前元素与当前元素加上前一个子列的和,来决定是否将当前元素加入子列中。
1062

被折叠的 条评论
为什么被折叠?



