gpt4 book ai didi

Javascript 算法在 1's and 0' s 矩阵中查找最大尺寸正方形

转载 作者:行者123 更新时间:2023-11-28 14:11:59 25 4
gpt4 key购买 nike

您是 WeWork 等联合办公空间的所有者,并且您的办公楼是矩形的。您的团队刚刚创建了许多墙壁隔断,为初创公司创建迷你办公室。您的办公园区由 1(地板空间)和 0(墙壁)组成的二维数组表示。该阵列上的每个点都是一英尺乘一英尺见方。在出租给租户之前,您需要为自己预订一间办公室。您希望在办公室中放置尽可能最大的矩形 table ,并且您将选择适合这张 table 的办公室。 table 两侧始终与办公楼的边界平行。您的办公室可以容纳的最大 table 的面积是多少?

功能MaximumTable() 有一个参数:

网格:由 1 和 0 组成的 2D 网格/数组

输入格式对于我们的一些模板,我们已经为您处理了解析。如果我们没有为您提供解析功能,您将需要直接解析输入。在这个问题中,我们的输入格式如下:

第一行是二维数组的行数第二行是二维数组的列数输入的其余部分包含要处理的数据以下是原始输入的示例:

4
5
11110
11010
11000
00000

预期输出返回网格中由 1 组成的最大直 Angular 平行四边形的面积。假设网格被 0(墙)包围。

限制假设数组的边界如下:数组元素总数:宽x高<=10^6

示例

Example biggestTable() Input

grid:
[[1, 0, 1, 1, 1],
[1, 0, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 0, 0, 1, 0]]
Example Output

9


/**
* @param {character[][]} grid
* @return {number}
*/
var biggestTable = function(grid) {
// your code here

return 0;
};

let height = parseInt(readline());
let width = parseInt(readline());
let grid = [];
for (var i = 0; i < height; i++) {
grid[i] = (readline() || "").split("");
}

有人可以帮忙解决一下吗?

最佳答案

可以通过逻辑方式解决问题,即循环遍历建筑物并检查可以放置 table 的潜在空间,然后返回找到的最大的表:

function biggestTable(grid) {
const tableExist = (x, y, w, h) => {
let exist = 1;
for(let i = 0; i < w ; i++) {
for(let j = 0; j < h ; j++) {
exist &= grid[j + y] !== undefined && grid[j + y][i + x] == 1;
}
}
return exist;
};

const biggestTableAt = (x, y) => {
let max = 0;
for(let w = 1; w <= grid[0].length; w++) {
for(let h = 1; h <= grid.length; h++) {
const table_size = w * h;
if (tableExist(x, y, w, h) && table_size>max) {
max = table_size;
}
}
}
return max;
};

let max = 0;
for(let x = 0; x < grid[0].length; x++) {
for(let y= 0; y < grid.length; y++) {
const table_size = biggestTableAt(x, y);
if (table_size > max) {
max = table_size;
}
}
}
return max;
}


const simple_grid = [
[1, 0, 1, 1, 1],
[1, 0, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 0, 0, 1, 0]
];
console.log(biggestTable(simple_grid)); //returns 9
const big_grid = [
[1, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1],
[1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1],
[1, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1],
];
console.log(biggestTable(big_grid)); // returns 18

接受的响应对于两个网格都返回 9,因为它假定表格是正方形,而不是问题中所要求的矩形

关于Javascript 算法在 1's and 0' s 矩阵中查找最大尺寸正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59108779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com