如何找到子数组椭圆的最大和
How to find max sum of sub array ellipses
我正在尝试使用 ellipses function
查找子数组的最大总和。 (并且不使用数组)。
例子
{−2, 1, −3, 4, −1, 2, 1, −5, 4}
期望的输出
{4, −1, 2, 1} = 6
有很多算法可以做到这一点,比如蛮力、分而治之等等',但它们都涉及数组和从某个索引访问数字。
到目前为止我的代码:
#include <stdio.h>
#include <stdarg.h>
int getsum(int x, ...) {
va_list(list);
va_start(list,x);
int k,s;
for (k=0; k<x; k++) {
s+=va_arg(list,int *);
}
va_start(list,x);
}
我的问题是我必须遍历所有索引并且
我不能只写 list[x]
,
任何线索或想法将不胜感激。
提前致谢。
首先,我的做法:
#include <stdio.h>
#include <stdarg.h>
int getsum(int n, ...){
va_list(list);
int k,s = 0;
int maxsum = 0;
int minsum = 0;
va_start(list,n);
for (k=0; k<n; k++){
s+=va_arg(list,int);
if(s < minsum){
minsum = s;
}
if(s - minsum > maxsum){
maxsum = s - minsum;
}
}
va_end(list);
return maxsum;
}
int main(){
printf("%d\n", getsum(9, -2, 1, -3, 4, -1, 2, 1, -5, 4));
}
我正在寻找当前部分和的最大距离和目前找到的最小值。为此,不需要随机访问,因此不需要数组。第一个参数 n
是输入大小。
但是由于您不能将可变大小的数据传递给此函数,因此它可能不是很有用
我正在尝试使用 ellipses function
查找子数组的最大总和。 (并且不使用数组)。
例子
{−2, 1, −3, 4, −1, 2, 1, −5, 4}
期望的输出
{4, −1, 2, 1} = 6
有很多算法可以做到这一点,比如蛮力、分而治之等等',但它们都涉及数组和从某个索引访问数字。
到目前为止我的代码:
#include <stdio.h>
#include <stdarg.h>
int getsum(int x, ...) {
va_list(list);
va_start(list,x);
int k,s;
for (k=0; k<x; k++) {
s+=va_arg(list,int *);
}
va_start(list,x);
}
我的问题是我必须遍历所有索引并且
我不能只写 list[x]
,
任何线索或想法将不胜感激。
提前致谢。
首先,我的做法:
#include <stdio.h>
#include <stdarg.h>
int getsum(int n, ...){
va_list(list);
int k,s = 0;
int maxsum = 0;
int minsum = 0;
va_start(list,n);
for (k=0; k<n; k++){
s+=va_arg(list,int);
if(s < minsum){
minsum = s;
}
if(s - minsum > maxsum){
maxsum = s - minsum;
}
}
va_end(list);
return maxsum;
}
int main(){
printf("%d\n", getsum(9, -2, 1, -3, 4, -1, 2, 1, -5, 4));
}
我正在寻找当前部分和的最大距离和目前找到的最小值。为此,不需要随机访问,因此不需要数组。第一个参数 n
是输入大小。
但是由于您不能将可变大小的数据传递给此函数,因此它可能不是很有用