2201_75386770 2023-05-11 17:30 采纳率: 100%
浏览 18
已结题

输入序列并求乘积最大连续子数列

img


输入n个元素组成的序列,找出乘积最大的连续子数列,若最大值不是正数则输出–1

  • 写回答

3条回答 默认 最新

  • 社区专家-Monster-XH 2023-05-11 17:39
    关注

    基于Monster 组和GPT的调写:

    
    #include <stdio.h>
    
    int maxProduct(int arr[], int n) {
        int max_product = arr[0];
        int min_product = arr[0];
        int result = arr[0];
        
        for (int i = 1; i < n; i++) {
            if (arr[i] < 0) {
                // 交换最大值和最小值
                int temp = max_product;
                max_product = min_product;
                min_product = temp;
            }
            
            max_product = (arr[i] > max_product * arr[i]) ? arr[i] : max_product * arr[i];
            min_product = (arr[i] < min_product * arr[i]) ? arr[i] : min_product * arr[i];
            
            result = (max_product > result) ? max_product : result;
        }
        
        return (result < 0) ? -1 : result;
    }
    
    int main() {
        int n;
        scanf("%d", &n);
        
        int arr[n];
        for (int i = 0; i < n; i++) {
            scanf("%d", &arr[i]);
        }
        
        int max_product = maxProduct(arr, n);
        printf("%d\n", max_product);
        
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 5月11日