c语言输出最大子序列的长度问题

这个代码,打到这里的话,怎么才能实现输出最大子序列的长度呢?

img

img

可以使用滑动窗口方法。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv)
{
    int n, i;
    int *num;
    scanf_s("%d", &n);

    num = (int *)calloc(n, sizeof(int));

    for (i = 0; i < n; i++)
    {
        scanf_s("%d", num + i);
    }

    int left = 0;
    int max = 0;
    int len = 0;

    while (left < n - 1)
    {
        int index = left;
        int sum = 0;

        while (index < n)
        {
            sum += num[index];
            if (sum > max)
            {
                max = sum;
                len = index - left;
            }
            else if (sum == max && len < (index - left))
            {
                len = index - left;
            }

            index++;
        }

        left++;
    }

    printf("%d %d\n", max, len + 1);

    free(num);
    
    getchar();
    return 0;
}

如果对您有用,望采纳。