在C语言中找到数组中正整数的最大和

时间:2018-12-12 19:34:04

标签: c arrays algorithm

我的任务是:

查找数组中正整数的最大和

任务是我有65个整数的随机数组,它们的值在-10到30之间,我需要添加一个正数的整数并找到它们的最大值。

例如,我的数组为[28 28 10 -10 -5 20 -1 2 5 4 -9 2 4 -1]。所以我需要加上28 + 28 + 10 = 66,跳过负值,然后转到下一个正值20,但它小于66,所以我们坚持66,然后转到下一个正值2 + 5 + 4 = 11,但它也小于66,所以我们继续。到目前为止,我有一个打印的数组,我不知道如何正确地对其进行排序。到目前为止,我的代码是:

int main()
{
int array[65];
int n,i,j;

//Primeral array printing*********
for(i=0; i<65; array[i++]=rand()%40-10);
printf("array:\n");
for (i=0; i<65; printf("%3d ",array[i++]));
putchar('\n');
putchar('\n')
}

1 个答案:

答案 0 :(得分:1)

正如评论所说,您无需对数组进行排序。您所需要做的就是找到连续正数的最大和。您可以在O(n)中做到这一点。

考虑以下伪代码:

Max = 0
Sum = 0
For i between 0 to n:
    If arr[i] < 1
        Sum = 0
    Else 
        Sum += arr[i]
    If sum > max
         Max = sum