首页 > 最大正方形
头像 方旬
发表于 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< 展开全文
头像 cold_water
发表于 2026-04-21 20:59:55
import java.util.Scanner; import java.util.ArrayList; // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] 展开全文
头像 金刚侠
发表于 2026-05-01 10:58:35
//注意i.j是行列,换成坐标就是(j,i) //学到的数学方法:向量旋转公式 //对于多重循环更加清晰 #include<bits/stdc++.h> using namespace std; int main(){ int n,len=0; cin>>n; 展开全文
头像 LH_Coffee
发表于 2026-01-29 11:40:56
#include<bits/stdc++.h> using namespace std; struct node{ int x,y; }; int main(){ char c[110][110]; int ans[4][2]; vector<nod 展开全文
头像 _name
发表于 2025-12-26 23:05:08
#include <iostream> using namespace std; /* 题中坐标从1开始,但操作时i,j均从0开始,在最后输出时对结果加一即可 先把所有的字符储存至cs[n][n] 然后开始遍历 先遍历到第一个#号,然后去找第二个#号,把这两个#号作为正方形的两个顶点 根 展开全文
头像 Lihuia_
发表于 2026-03-18 23:24:25
#include<bits/stdc++.h> using namespace std; int n; char ch[110][110]; int ans[4][2]; int main(){ cin>>n; for (int i=1;i<=n;i+ 展开全文

等你来战

查看全部