数组动归题解 | #连续子数组的最大乘积#
连续子数组的最大乘积
https://www.nowcoder.com/practice/fd8c819c07c9493887bfac8549c119f4
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> arr(n);
for(int i=0;i<n;i++){
cin >> arr[i];
}
int max_n = arr[0];
int GMax=arr[0],GMin=arr[0];
for(int i=1;i<n;i++){
int mx = GMax, mn = GMin;
GMax = max(mx * arr[i] , max(mn*arr[i] , arr[i]));
GMin = min(mn * arr[i] , min(mx*arr[i] , arr[i]));
max_n = max(GMax , max_n);
}
cout << max_n;
}
// 64 位输出请用 printf("%lld")
涉及数组的+-*/都可以用
dp[i]代表第i个数字为末尾的求解值
然后每轮记得保存下最值


安克创新 Anker公司福利 767人发布