一、题目
有一串数字,求其和为0的最长序列。例如有序列:-4,2,1,1,3,-2,-1,5,那么和为0的最长序列就是:-4,2,1,1,3,-2,-1。
二、分析
可以一直相加,然后记住和为0的最后的一个相加元素的下标即可。
三、源码
#include <stdlib.h>
/*打印和为0的最长序列*/
void GetMaxLength(int* nums, int n)
{
int count = 0;//和为0时已经加了多少个数
int sum = 0;//和
for (int i = 0; i < n; i++)
{
sum = sum + nums[i];
if (sum == 0)
{
count = i + 1;
}
}
for (int j = 0; j < count; j++)
{
printf("%d ", nums[j]);
}
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
scanf("%d", &n);
int* nums = (int*)malloc(sizeof(int)*n);
for (int i = 0; i < n; i++)
{
scanf("%d", &nums[i]);
}
GetMaxLength(nums, n);
return 0;
}