救救孩子!在矩阵中寻找最长的长方形
本帖最后由 欺Ran 于 2021-11-9 02:16 编辑在一个只有10的矩阵中找到最长的用‘1’组成的长方形
还必须用到这个方程 https://media.cheggcdn.com/media/ca5/ca5bde67-372d-46b6-bdf4-5772afe2ecec/phpEJ9m9T so, where is the Matrix? suchocolate 发表于 2021-11-7 11:10
so, where is the Matrix?
Matrix是随机的,任何二维二进制的都可以 你的问题表达不太清,我的代码如下,希望对你有帮助:
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 傻眼貓咪 发表于 2021-11-7 12:49
你的问题表达不太清,我的代码如下,希望对你有帮助:
C 语言:Python 语言:输出结果:
您好,您写的这个代码很好。但是我想用我已经写出来的那个当一个help方程。我提供的那个是给行和列然后算出从那个坐标开始的最大的长方形。现在我想在运用这个的基础上,再写一个代码为可以算出整个矩阵中最大的长方形。我应该怎么写呢,希望还可以帮一下我,万分感谢,用python就好。
页:
[1]