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

和大于给定值的子数组的最小和

杨凌
2023-03-14

这个问题有多项式解吗?如果有,你能呈现吗?

共有1个答案

司空祯
2023-03-14

正如其他答案所表明的,这是一个NP完全问题,被称为“背包问题”。所以没有多项式解。但它有一个伪多项式时间算法。这就解释了什么是伪多项式。

算法的可视化解释。

和一些代码。

    null
 类似资料:
  • 我想从数组的一部分找到最大值和最小值。我知道我可以通过复制数组将所需的数组部分复制到另一个数组中,但只是想知道是否可以不复制数组,因为我必须为不同的子数组进行循环 例如: 现在我想从1到4找到子数组的最小/最大值(如果可能,不复制子数组)

  • 给定一个2D数组和一个数字。 问题:我们有一个矩阵,矩阵的每个单元格表示遍历该单元格的成本。我们从左上角开始,我们必须到达最后一个单元格(右下角)。我必须编写一个函数,返回到达而不超过的最大代价路径的代价。 如果找不到最大和小于或等于的路径,则返回,矩阵的值不能为负 解决方案:我尝试了很多代码,但没有一个返回我期望的结果。 我的第一个解决方案是在一个简单的数组中转换2D数组,并应用背包算法,但它不

  • 我有一个数组[1,2,3],总和为4。所以所有的连续子数组都是 [1],[1,2][2,3] 和 [1,2,3]。因此,小于或等于总和的最大长度子数组为 [1,2],长度为 2。 我用下面的方法找到了所有的子数组,并检查了子数组的和,如下所示。但是这种方法不适用于负数。{1,2,1,1,3,-2,-3,7,9};答:7

  • 主要内容:普通算法,分治算法程序中,我们经常使用数组(列表)存储给定的线性序列(例如 {1,2,3,4}),那么如何查找数组(序列)中的最大值或者最小值呢? 查找数组(序列)中最大值或最小值的算法有很多,接下来我们以 {3,7,2,1} 序列为例讲解两种查找最值的算法,一种是普通算法,另一种是借助 分治算法解决。 普通算法 普通算法的解决思路是:创建两个变量 max 和 min 分别记录数组中的最大值和最小值,它们的初始值都

  • 我的问题很简单,但我不知道如何解决我想要的。我必须找到小于给定数字的最大数素数,如果不存在则打印消息。 代码是有效的,如果数字是10,它会打印7,但我想做2个新的修改,我找不到解决方案。例如,如果给定的数字是1,我的程序应该如何修改以打印消息?我试着写一个if-else,但是如果我用if修改了while,这将不会有帮助。第二件事,如果给定的数是素数,代码仍然会找到比给定数少的数。如果我给数字7,输

  • 问题内容: 我的代码没有给出错误,但是没有显示最小值和最大值。代码是: 我是否需要system.out.println()来显示它,否则返回应该起作用吗? 问题答案: 您正在调用方法,但不使用返回的值。