我的任务是:
查找数组中正整数的最大和
任务是我有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')
}
答案 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