首页 > 最大正方形
头像 方旬
发表于 2025-01-25 09:31:58
题目:链接 题意 给定一个字符矩阵,找到矩阵中的最大正方形。 思路 关键在于如何确定一个正方形。枚举正方形的四个顶点,有8层for循环,显然不可取。所以根据正方形的特点,只需要枚举正方形的对角线的两个顶点,只需要4层for循环。确定好正方形以后,就是寻找最大的正方形,根据几何知识,边长(对角线)越长 展开全文
头像 Ldh1315109
发表于 2025-11-07 17:11:52
def solve(testcase): n = II() s = [I() for _ in range(n)] A = [] for i in range(n): for j in range(n): if s[i][j 展开全文
头像 Z_L_G
发表于 2025-02-26 21:57:23
题意 给定一个由*和#构成的正方形矩阵,求其中以#为顶点的最大正方形,输出四个顶点坐标 思路 两个点确定一个正方形,三个点确定一个长方形,枚举所有的两个#,check当前两个#构造出的另外两个顶点是否为#,通过边长比较正方形大小 注意:计算几何中尽可能避免硬解方程组,多考虑向量和三角函数,本题 展开全文
头像 RogeAustine
发表于 2025-12-24 17:03:36
/*这道题需要懂得这样一点,就是正方形已知三点就可以通过横纵坐标差值求出第四点 因此我们对于每个为井号的点,从这个点出发开始往右下进行遍历, 通过手动构造的点的横纵坐标差值,构造出剩余两个点的坐标, 注意检查是否越界,然后看构造出的点是不是井号就行了 实时更新最大值与最大值对应的四个点坐标 展开全文
头像 自由的风0450
发表于 2025-11-22 12:36:20
因为所以直接枚举。 先用找出两个顶点,再计算其余顶点。 #include<vector> #include<cmath> using namespace std; int main() { int n; cin>>n; vector< 展开全文
头像 _name
发表于 2025-12-26 23:05:08
#include <iostream> using namespace std; /* 题中坐标从1开始,但操作时i,j均从0开始,在最后输出时对结果加一即可 先把所有的字符储存至cs[n][n] 然后开始遍历 先遍历到第一个#号,然后去找第二个#号,把这两个#号作为正方形的两个顶点 根 展开全文
头像 Drink0318
发表于 2025-12-08 11:37:11
#include <iostream> #include <cmath> using namespace std; const int MAXN = 110; char ch[MAXN][MAXN]; // 存储最终答案的四个顶点 int ans[4][2]; // 记录最 展开全文
头像 lotusor
发表于 2025-12-06 23:13:58
n = int(input()) list0 = [list(input().strip()) for _ in range(n)] # 收集所有#的位置 points = [] for i in range(n): for j in range(n): if list0[i 展开全文

等你来战

查看全部