C 求相邻元素不超过k个的数组元素最大和的算法
嗨, 我遇到了这个问题。给定一个仅包含正值的数组。您需要找到通过添加元素可以得到的最大和。条件是拾取的相邻图元不能超过k个。我的简单解决办法是C 求相邻元素不超过k个的数组元素最大和的算法,c,algorithm,C,Algorithm,嗨, 我遇到了这个问题。给定一个仅包含正值的数组。您需要找到通过添加元素可以得到的最大和。条件是拾取的相邻图元不能超过k个。我的简单解决办法是 此解决方案并非在所有情况下都能产生正确的输入。我不知道为什么。 有人能帮忙吗?谢谢。在代码中,您只需跳过每个k+1th元素。有时候,最好跳过更多的元素,但要明智地去做。(选择要跳过的最低数字等) 编辑:一些简单的递归解决方案:(这不是有效的,但会起作用) long maxsum(int n,int k,long*利润){ 长和=0,最大值=0,cu
此解决方案并非在所有情况下都能产生正确的输入。我不知道为什么。
有人能帮忙吗?谢谢。在代码中,您只需跳过每个
k+1
th元素。有时候,最好跳过更多的元素,但要明智地去做。(选择要跳过的最低数字等)
编辑:一些简单的递归解决方案:(这不是有效的,但会起作用)
long maxsum(int n,int k,long*利润){
长和=0,最大值=0,cur;
int i;
如果(我找出了距离k的数字,得到了最小和。然后我从总和中减去了这个最小和。这就是我所做的。我注意到我们可以存储每个索引返回的最大和,以找到下一个索引的最大值。这是我尝试的。我注意到每个索引的最大值都可以存储和使用。)计算其他人的最大值。这是我做的。但这不够快。有什么想法吗
long maxsum(int n,int k,long *profits) {
long sum=0,max=0,cur;
int i;
if (n<=k) {
for (i=0;i<n;i++) sum+=profits[i];
return sum;
}
for (i=0;i<=k;i++) {
cur=sum+maxsum(n-i-1,k,profits+i+1);
if (cur>max) max=cur;
sum+=profits[i];
}
return max;
}