当前位置: 首页 > 编程笔记 >

程序查找在Python中最大和为k的矩形的和

柳鸿博
2023-03-14
本文向大家介绍程序查找在Python中最大和为k的矩形的和,包括了程序查找在Python中最大和为k的矩形的和的使用技巧和注意事项,需要的朋友参考一下

假设我们有一个二维矩阵和另一个值k,我们必须找到sum≤k的矩形的最大和。

所以,如果输入像

5 −2
7 10

并且k = 15,则输出将为12,因为我们可以采用矩形[5,7]来得到小于15的12之和。

为了解决这个问题,我们将遵循以下步骤-

  • n:= a的行数

  • m:= a的列数

  • ans:= inf

  • 对于范围为0至n的i1,执行

    • 对于0到m范围内的j,执行

    • s:=一个新集合

    • 将0插入s

    • 和:= 0

    • 对于0到m范围内的j,执行

    • 行[j]:=行[j] + a [i2,j]

    • u:=最低温度

    • ans:= ans和(sum − u)的最大值

    • sum:= sum + row [j];

    • temp:= s中所有项目的列表,列表大于(sum-k)

    • 如果temp的大小> 0,则

    • 将sum插入s

    • row:=大小为m的列表,并用0填充

    • 对于i1到n范围内的i2,执行

    • 返回ans

    让我们看下面的实现以更好地理解-

    示例

    class Solution:
       def solve(self, a, k):
          n = len(a)
          if n == 0:
             return 0;
          m = len(a[0])
          ans = -999999;
          for i1 in range(n):
             row = [0]*m;
             for i2 in range(i1, n):
                for j in range(m):
                   row[j] += a[i2][j]
                s = set()
                s.add(0)
                sum = 0
                for j in range(m):
                   sum += row[j];
                   temp = [e for e in s if e > (sum − k)]
                if len(temp) > 0:
                   u = min(temp)
                   ans = max(ans, sum − u)
                s.add(sum)
             return ans
    ob = Solution()
    matrix = [
       [5, −2],
       [7, 10]
    ]
    k = 15
    print(ob.solve(matrix, k))

    输入值

    [
    [5, −2],
    [7, 10]
    ], 15
    输出结果
    12

     类似资料:
    • 我试图找到给定排序数组的最大K数。 ex:输入- 到目前为止,我编写的代码返回最大的K元素,但它需要返回最大的K数字。任何帮助都将不胜感激。

    • 问题内容: 可以说我有一本字典: 所以可以说我想写一个函数 获得具有前k个值的键(保持顺序,即开头出现最高值的键)的最有效方法(以大O表示)是什么? 问题答案: : 您可以使用关键字参数来指定应该用作排序键的内容,例如:

    • 这是一个面试问题。 在排序的行(但不是排序的列)和行之间没有关系的矩阵中查找第k个最小元素。(第一行和第n行之间没有关系——我们只知道每一行都是按升序排列的) 输入示例如下: 这种情况下的结果是 因为20是这个矩阵中第五小的元素。 我首先想到将所有元素添加到minHeap中,然后轮询元素,同时每次迭代从k中减去一个,直到我们得到答案。我还考虑为O(m*n)解决方案实现快速选择,尽管这些解决方案并没

    • 第一个http://storage.thelogin.ru/stackoverflow/find-updated-regangles-in-image/1.png第二个http://storage.thelogin.ru/stackoverflow/find-updated-regangles-in-image/2.png ImageMagick的告诉我这些像素已更新: 比较http://stor

    • 假设我有一个包含整数的数组。 如何找到大小的子集,使得子集中所有整数对之间的距离,我的意思是它们在最远的距离。 示例:数组和, ,最小距离为10和6之间的<错误的子集: ,最小距离为 ,最小距离为 我想到了一个解决办法: 1) 排序数组2)选择一个[0],现在在数组中查找ceil(a[0])=Y。。。。然后ceil(Y

    • 假设您给出了一个大小为N的数组,它可以有正数和负数。我们需要返回总和的最大子数组的长度等于k。我尝试使用滑动窗口算法,但很快我发现它在这里不起作用,因为数组元素可以有正负整数。 例如: arr=[-20,-38,-4,-7,10,4]和k = 3很明显,有两个可能的子阵列([-4,-7,10,4]和[-7,10]),它们的和等于给定的k。因此输出将是4(最大子阵列的长度) 蛮力方法将采取O(n^2