Xuic 2022-03-01 10:09 采纳率: 0%
浏览 20

7-2 Maximum Subsequence Sum (25 分)第四个全是负数的为什么过不了

#include<stdio.h>
int main(void)
{
    int n;
    scanf("%d",&n);
    int a[n];
    int i=0,max=-999,temp=0,j=0;
    int first,last;
    first=last=0;
    for(i=0;i<n;i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=0;i<n;i++)
    {
        temp=0;
        
        for(j=i;j<n;j++)
        {
            
            temp+=a[j];
            if(temp>max)
            {
                first=a[i];
                max=temp;
                last=a[j];
            }
            
        }
        
    }
    
    printf("%d %d %d\n",max,first,last);
    
    
    
    
    return 0;
}

https://pintia.cn/problem-sets/1498095307925921792/problems/1498095387897106434

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2022-03-01 13:05
    关注

    供参考:

    #include <stdio.h>
    #include <malloc.h>
    int main(void)
    {
        int n, i, maxsum = -1, sum = 0;
        int first = 0, last = 0, tmp = 0;
        scanf("%d", &n);
        int* a = (int*)malloc(sizeof(int) * n);  //int a[n];
        for (i = 0; i < n; i++)
        {
            scanf("%d", &a[i]);
        }
        for (i = 0; i < n; i++)
        {
            sum += a[i];
            if (sum > maxsum){
                maxsum = sum;
                first = tmp;
                last = i;
            }
            else if (sum < 0) {
                sum = 0;
                tmp = i + 1;
            }
        }
        if (maxsum == -1)
            printf("%d %d %d\n", 0, a[0], a[n - 1]);
        else
            printf("%d %d %d\n", maxsum, a[first], a[last]);
        return 0;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月1日