这个代码,打到这里的话,怎么才能实现输出最大子序列的长度呢?
可以使用滑动窗口方法。
#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;
}
如果对您有用,望采纳。