#include<iostream> #include<string> #include<algorithm> #include<stack> #include<vector> #include<cmath> using namespace std; //动态规划 int main() { int n; while (cin >> n) { int *arr = new int[n]; cin >> arr[0]; int max = arr[0]; for (int i = 1; i < n; i++) { cin >> arr[i]; if (arr[i - 1] > 0)//若前一个元素大于0,则将其加到当前元素上 arr[i] += arr[i - 1]; if (arr[i] > max) max = arr[i]; } cout << max << endl;//处理后数组中的最大值即为原数组的最大子串和 } return 0; } |
Double click to view unformatted code.