当前位置: 首页 > 知识库问答 >
问题:

所有邻接子阵优化之和

微生德泽
2023-03-14
for(i = min; i<= max; ++i)
{
    sum = 0;
    for(j = i; j <= max; ++j)
    {
        sum+=a[j];
        printf("%lld\n", sum);
    }
}

共有1个答案

金泉
2023-03-14

使用动态编程,可以实现O(n)答案。其基本思想是计算所有元素的前缀总和。

A(i)是从0i的元素的总和。这可以在O(n)中很容易地计算,方法是:

// let your array by Src[Max]
int A[MAX];
A[0] = Src[0];
for(int i=1; i<MAX; i++) A[i] +=A[i-1] + (i+1)*Src[i];

然后对于任何元素i和j,可以计算sum(i,j)=a[j]-a[i](根据输入需求调整边界)。

 类似资料:
  • 在长度为N的数组中求和最大的邻接子数组。 输入格式: 输出格式: 返回一个整数,表示相邻子数组的最大可能和。 制约因素: 输入2:A=[-2,1,-3,4,-1,2,1,-5,4] 产出2:6 说明2:子数组[4,-1,2,1]的最大可能和为6。 你能告诉我为什么下面的代码不起作用,代码中的错误是什么吗:

  • 所以,我刚刚进行了一次在线编程评估,给了我两个问题,其中一个是这个连续的子数组和提供了两个复杂的编码问题+8个MCQ,并将在1小时内完成。 这里我将讨论上面提到的子数组的最大邻接和之一。通常,我发现困难的部分是处理负数和连续。我所做的是首先将应用到给定的数组,然后再次按照负值的绝对值排序,就像i的例如,对于给定的随机数组,我在每个i和所有j迭代后都有一个max,如果max 。

  • 我试图研究邻接子阵列,但我没有得到任何解释这个概念的研究材料。 但是我发现了一个例子,它说给定数组[-2,1,-3,4,-1,2,1,-5,4],相邻的子数组是[4,-1,2,1]

  • 例如:如果数组是[9,8,7,6,5,4,3,1,2,2],它应该返回46(长度为7的子数组[9,8,7,6,5,4,3]和长度为2的子数组[2,2]之和)。不能组合[9,8,7,6,5,4,3]和[1,2,2],因为这将产生长度为10的非素数的连续子数组(幂等性)。 有谁能解释一下如何使用DP来解决这类问题吗?多谢了。

  • 我不知道该如何解决这个问题。我得到了一个有12个节点A-L的图。17个边缘连接它们。我被告知要找到从A到L的所有路径。我可以遍历一个节点多次,但只能遍历一次边。输出应该打印每个路径和路径总数。 例如,如果只有1个路径。输出应为: 我想一个递归的深度优先搜索函数应该可以解决这个问题,但我就是想不出一个打印每一条路径的方法。例如,如果我的函数找到一个路径ABDL并到达结尾L,它将打印ABDL。然后它回

  • 我看到一个问题,要求它找到所有相邻子阵列的最小值。例如,对于数组A=[1,2,3],答案将是一个包含[1,2,3,1,2,1]的数组B<怎么做- 我所做的是,构建了一个段树,但是它不包含所有连续子数组的最小值。 我也不认为我可以使用“脱钩”,因为我不必在特定长度的子数组中找到最小值。 那么,我如何获得所有连续子阵列(B阵列)的最小值?