数组动归题解 | #连续子数组的最大乘积#

连续子数组的最大乘积

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个数字为末尾的求解值

然后每轮记得保存下最值

全部评论

相关推荐

面试摇了我吧:啊哈哈面试提前五个小时发,点击不能参加就是放弃
点赞 评论 收藏
分享
2 3 评论
分享
牛客网
牛客企业服务