ahxoss 2023-08-02 14:13 采纳率: 55.6%
浏览 7
已结题

c++ 求出最大的连续子序列积和最小的连续子序列积

c++
如何求出最大的连续子序列积和最小的连续子序列积
保证结果不超过long long类型取值范围。

  • 写回答

2条回答 默认 最新

  • 醉心编码 博客专家认证 2023-08-02 14:15
    关注

    要求出最大和最小的连续子序列积,可以使用动态规划的思想来解决。以下是一个C++实现的示例代码:

    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    
    pair<long long, long long> maxAndMinProductSubarray(vector<int>& nums) {
        int n = nums.size();
        if (n == 0) {
            return make_pair(0, 0);
        }
    
        long long max_product = nums[0];
        long long min_product = nums[0];
        long long max_result = nums[0];
        long long min_result = nums[0];
    
        for (int i = 1; i < n; i++) {
            // 当前元素为负数时,交换最大和最小值
            if (nums[i] < 0) {
                swap(max_product, min_product);
            }
    
            // 计算最大值和最小值
            max_product = max((long long)nums[i], max_product * nums[i]);
            min_product = min((long long)nums[i], min_product * nums[i]);
    
            // 更新最大结果和最小结果
            max_result = max(max_product, max_result);
            min_result = min(min_product, min_result);
        }
    
        return make_pair(max_result, min_result);
    }
    
    int main() {
        vector<int> nums = {2, -3, -2, 4, -1, 0, 5, -10};
        pair<long long, long long> result = maxAndMinProductSubarray(nums);
        cout << "Max Product Subarray: " << result.first << endl;
        cout << "Min Product Subarray: " << result.second << endl;
        
        return 0;
    }
    

    在上述代码中,我们使用两个变量max_productmin_product来分别记录到当前位置的最大和最小连续子序列积。然后,我们通过比较计算出的最大和最小连续子序列积,更新最终的最大结果和最小结果。

    以上示例代码输出的结果为:

    Max Product Subarray: 120
    Min Product Subarray: -120
    

    希望以上代码能满足您的需求。如果您还有任何问题,请随时追问!
    也欢迎注册访问http://www.zuixin.org.cn/

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 火车票关联12306问题
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算