我试图找到一种算法来找到一个实数数组的K
大小不相交的连续子集,以最大化元素的总和。L
x
详细说明,X 是一组 N 个正实数:
X={x[1],x[2],...x[N]} where x[j]>=0 for all j=1,...,N.
称为长度 L 的连续子集S[i]
定义为 X 的 L 个连续成员,从位置开始到位置n[i]
结束n[i]+L-1
:
S[i] = {x[j] | j=n[i],n[i]+1,...,n[i]+L-1} = {x[n[i]],x[n[i]+1],...,x[n[i]+L-1]}.
如果有两个这样的子集S[i]
,S[j]
则称为成对不相交(非重叠)|n[i]-n[j]|>=L
。换句话说,它们不包含 X 的任何相同成员。
定义每个子集成员的总和:
SUM[i] = x[n[i]]+x[n[i]+1]+...+x[n[i]+L-1];
S[1],S[2],...,S[K]
目标是找到长度为 L 的K 个连续且不相交(不重叠)的子集,SUM[1]+SUM[2]+...+SUM[K]
以使其最大化。