欺Ran 发表于 2021-11-7 05:35:08

救救孩子!在矩阵中寻找最长的长方形

本帖最后由 欺Ran 于 2021-11-9 02:16 编辑

在一个只有10的矩阵中找到最长的用‘1’组成的长方形
还必须用到这个方程 https://media.cheggcdn.com/media/ca5/ca5bde67-372d-46b6-bdf4-5772afe2ecec/phpEJ9m9T

suchocolate 发表于 2021-11-7 11:10:14

so, where is the Matrix?

欺Ran 发表于 2021-11-7 11:26:29

suchocolate 发表于 2021-11-7 11:10
so, where is the Matrix?

Matrix是随机的,任何二维二进制的都可以

傻眼貓咪 发表于 2021-11-7 12:49:12

你的问题表达不太清,我的代码如下,希望对你有帮助:
C 语言:#include <stdio.h>
#include <string.h>

int main()
{
    // 自行输入所有值,row 表示行,col 表示列
    // int row, col;
    // scanf("%d %d", &row, &col);
    // int arr;
    // memset(arr, 0, row*col*sizeof(int));
    // for(int i = 0; i < row; i++){
    //   for(int j = 0; j < col; j++){
    //         scanf("%d", &arr);
    //   }
    // }
   
    // 范例:假设已经输入全部值,row 为 5,col 为 5
    int row = 5, col = 5;
    int arr = {
      {0, 1, 1, 0, 1},
      {1, 0, 1, 1, 0},
      {0, 1, 0, 1, 0},
      {0, 0, 0, 1, 1},
      {1, 1, 0, 0, 0}};
   
    // max 表示最长长方型长度
    int max = 0, res;
   
    // 找出最长长方型长度
    for(int i = 0; i < row; i++){
      res = 0;
      for(int j = 0; j < col; j++){
            if(arr){
                res++;
                max = res > max ? res : max;
            }
            else res = 0;
      }
    }
   
    // 行列对调:行变成列,列变成行 row-column exchange
    int temp;
    for(int i = 0; i < row; i++){
      for(int j = 0; j < col; j++){
            temp = arr;
      }
    }
    for(int i = 0; i < row; i++){
      for(int j = 0; j < col; j++){
            arr = temp;
      }
    }
   
    // 找出最长长方型长度
    for(int i = 0; i < row; i++){
      res = 0;
      for(int j = 0; j < col; j++){
            if(arr){
                res++;
                max = res > max ? res : max;
            }
            else res = 0;
      }
    }
   
    printf("%d", max);
    return 0;
}Python 语言:# 自行输入所有值,row 表示行,col 表示列
# row, col = map(int, input().split())
# arr = []; temp = []
# for i in range(row):
#   temp = list(map(int, input().split()))
#   arr.append(temp)

# 范例:假设已经输入全部值
arr = [
    ,
    ,
    ,
    ,
   
]

max = 0 # max 表示最长长方型长度

for row in arr: # 找出最长长方型长度
    res = 0
    for i in row:
      if i:
            res += 1
            max = res if res > max else max
      else:
            res = 0

arr = # 行列对调:行变成列,列变成行 row-column exchange

for row in arr: # 找出最长长方型长度
    res = 0
    for i in row:
      if i:
            res += 1
            max = res if res > max else max
      else:
            res = 0

print(max)输出结果:3

欺Ran 发表于 2021-11-7 13:38:26

傻眼貓咪 发表于 2021-11-7 12:49
你的问题表达不太清,我的代码如下,希望对你有帮助:
C 语言:Python 语言:输出结果:

您好,您写的这个代码很好。但是我想用我已经写出来的那个当一个help方程。我提供的那个是给行和列然后算出从那个坐标开始的最大的长方形。现在我想在运用这个的基础上,再写一个代码为可以算出整个矩阵中最大的长方形。我应该怎么写呢,希望还可以帮一下我,万分感谢,用python就好。
页: [1]
查看完整版本: 救救孩子!在矩阵中寻找最长的长方形